如何从keras中间层获得预测,包括所有先前的层

时间:2018-02-18 14:26:03

标签: python keras

以下keras FAQ示例[1]我想澄清如何从中间层获取预测。让我们说我有几个带有辍学的密集层,例如

model = Sequential()
model.add(Dense(out_dim, input_dim=input_dim, name="layer1"))
model.add(LeakyReLU()) # or whatever activation you want to use
model.add(Dropout(0.5))
model.add(Dense(int_dim, name="layer2"))
.... # here we have activation, dropout, etc.
model.add(Dense(lat_dim, name="layerN"))
# at last we add sigmoid and yield probabilities
model.add(Dense(1))
model.add(Activation("sigmoid"))
model.summary()

并且,我有兴趣从layerN 获得预测,包括所有以前的图层。 [1]推荐了几种方法,第一种方法是构建另一种模型,例如

new_model = Model(inputs=model.input,
                  outputs=model.get_layer("layerN").output)
output = new_model.predict(data)

我的问题是新模型是否采用输入向量而从" layerN"或者它实际上将我的输入通过所有层(包括丢失等)传播到" layerN"然后产生预测?如果它是前者,是否意味着我需要基本上构建新模型,所有图层都是原始的〜#34; layerN"?

最佳, 瓦伦丁。

[1] https://keras.io/getting-started/faq/#how-can-i-obtain-the-output-of-an-intermediate-layer

1 个答案:

答案 0 :(得分:1)

是的,您必须构建一个包含您想要的所有图层作为输出的模型,这不会自动完成。