如何从Keras中间层获取包括所有前面层的预测

2 投票
1 回答
1900 浏览
提问于 2025-05-18 21:19

根据Keras的常见问题解答示例,我想澄清一下如何从中间层获取预测结果。假设我有几个全连接层,并且使用了丢弃层,比如:

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()

我想从第N层获取预测结果,并且要包括之前的所有层。文献推荐了几种方法,第一种是构建一个新的模型,比如:

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

我的问题是,这个新模型是接收输入向量,然后从“第N层”输出预测,还是说它实际上会把我的输入通过所有层(包括丢弃层等)传递到“第N层”,然后再产生预测?如果是前者,那是不是意味着我需要基本上构建一个包含所有层直到“第N层”的新模型?

祝好,
Valentin。

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

相关问题:

  • 暂无相关问题
暂无标签

1 个回答

2

是的,你需要自己构建一个模型,把你想要的所有输出层都包含进去,这个过程不会自动完成。

撰写回答