В документации Keras точно указано, как это сделать. Если вы определили свою модель model_full
, вы можете создать другую, которая является лишь ее частью - от входного уровня до интересующего вас.
model_part = Model(
inputs=model_full.input,
outputs=model_full.get_layer("intermed_layer").output)
Тогда вы должны быть возможность получить вывод с промежуточного уровня, используя:
intermed_output = model_part(data)
Для этого вам просто нужно определить model_full
, который, я полагаю, у вас уже есть.
2-й подход
Вы также можете использовать встроенную функцию Keras, которую, я думаю, вы уже видели в документации. Поначалу это может показаться сложным, но это просто создание функции со связанными значениями, т.е.
from keras import backend as K
get_3rd_layer_output = K.function(
[model.layers[0].input], # param 1 will be treated as layer[0].output
[model.layers[3].output]) # and this function will return output from 3rd layer
# here X is param 1 (input) and the function returns output from layers[3]
output = get_3rd_layer_output([X])[0]
Очевидно, что снова нужно определить model
. Не уверен, есть ли какие-то другие требования помимо этого.