如何在keras中保存神经网络层的输出

时间:2018-03-27 17:43:00

标签: python machine-learning keras conv-neural-network lstm

我有一个用Keras构建的InceptionV3模型。

cnn_model = InceptionV3(weights='imagenet', include_top=False)


#Adding custom layers to the model (output layer)
x = cnn_model.output
x = Flatten()(x)
x = Dense(units=1024, activation='relu')(x)
x = Dropout(0.25)(x)
x = Dense(2048, activation='relu')(x)
predictions = Dense(units=4, activation='softmax')(x)

#Creating the predictor model
predictor_model = Model(input=cnn_model.input, output=predictions)
return predictor_model

我需要保存最终池层的输出,并将这些输出(特征)转换为序列,以处理LSTM层中的序列。实际上我正在使用框架(当然是视频),但我仍然不知道如何做到这一点。

所以,要确认,我需要:

  1. 保存网络最终池层的输出
  2. 按顺序转换此输出以在LSTM图层中处理。
  3. 非常感谢您的支持!

1 个答案:

答案 0 :(得分:1)

我找到了答案!

要从Keras InceptionV3模块中的最终合并层中提取输出,您只需:

output = cnn_model.get_layer('avg_pool').output

您可以使用此代码段检查图层名称和更多模块信息:

from keras.applications.inception_v3 import InceptionV3
model = InceptionV3()
model.summary()

如果您使用InceptionV3模块,您将获得:

avg_pool (GlobalAveragePooling2 (None, 2048)         0           mixed10[0][0]

最佳,

亚瑟。