ahu*_*ura 7 python neural-network theano keras tensorflow
我已经在 Keras 中训练了一个模型,并希望从中间层提取输出。该模型包含 dropout 层,我想绝对确保在执行此操作时不会丢失任何内容。
根据文档,可以像这样提取图层的输出:
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)
Run Code Online (Sandbox Code Playgroud)
但是,文档还展示了如何使用 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]
Run Code Online (Sandbox Code Playgroud)
在这里, learning_phase() 标志告诉 keras 是否实际使用 dropout 和仅在训练期间使用的类似东西。
我的问题是,如果我使用第一种方法,是否会自动停用 dropout,或者我是否需要执行类似于设置学习阶段标志的操作(如在第二种方法中所做的那样)。