ОБНОВЛЕНИЕ : Вы не можете получить выходные данные всех слоев, потому что "все слои" включают в себя Input
- и сообщение об ошибке говорит само за себя. Используйте:
outputs = get_all_outputs(model, input_data, 1)
Ниже должно работать для любой модели,
Model
или
Sequential
:
def get_all_outputs(model, input_data, learning_phase=1):
outputs = [layer.output for layer in model.layers[1:]] # exclude Input
layers_fn = K.function([model.input, K.learning_phase()], outputs)
return layers_fn([input_data, learning_phase])
Уровневые решения:
def get_layer_outputs(model, layer_name, input_data, learning_phase=1):
outputs = [layer.output for layer in model.layers if layer_name in layer.name]
layers_fn = K.function([model.input, K.learning_phase()], outputs)
return layers_fn([input_data, learning_phase])
# or, for passing in a layer directly
def get_layer_outputs(model, layer, input_data, learning_phase=1):
layer_fn = K.function([model.input, K.learning_phase()], layer.output)
return layer_fn([input_data, learning_phase])