python - 在 Keras 模型中获取中间层输出的正确方法?

标签 python tensorflow neural-network keras theano

我在 Keras 中训练了一个模型,想从中间层提取输出。该模型包含丢失层,我想绝对确保这样做时没有丢失任何东西。

根据documentation , 层的输出可以像这样提取:

layer_name = 'my_layer'
intermediate_layer_model = Model(inputs=model.input,
                                 outputs=model.get_layer(layer_name).output)
intermediate_output = intermediate_layer_model.predict(data)

但是,文档还展示了如何使用 Keras 函数执行此操作:

get_3rd_layer_output = K.function([model.layers[0].input, K.learning_phase()],
                                  [model.layers[3].output])

# output in test mode = 0
layer_output = get_3rd_layer_output([x, 0])[0]

# output in train mode = 1
layer_output = get_3rd_layer_output([x, 1])[0]

在这里,learning_phase() 标志告诉 keras 是否实际使用 dropout 和仅在训练期间使用的类似东西。

我的问题是,如果我使用第一种方法,dropout 会自动停用,还是我需要做一些类似于设置学习阶段标志的事情(就像第二种方法中所做的那样)。

最佳答案

是的,Model 知道它在训练或测试时,当您调用 train()predict() 时会自动设置标志。

关于python - 在 Keras 模型中获取中间层输出的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51091106/

相关文章:

python - 允许重复键的 python 中的 BTree 实现?

python - tensorflow 队列操作中线程的目的是什么?

python - tensorflow 中 GradientDescentOptimizer 和 AdamOptimizer 的区别?

artificial-intelligence - 如何使用遗传算法进化神经网络的权重?

python - Pandas 按组使用第一个有效索引删除 nan

python - 如何使用 BeautifulSoup 从网页中获取整个正文文本?

python - Keras深度学习网络参数数量

python - 神经网络在 1000 个时期后不学习来解决 XOR 问题

ubuntu - ImportError : libcudnn. so.6:无法打开共享对象文件:没有这样的文件或目录

python - 如何为在 tensorflow 中处理复杂张量的自定义操作定义梯度?