Keras模型中的dropout会自动停用吗?

k2fxgqgv  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(114)

我在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)

字符串
然而,文档也展示了如何使用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是否会自动停用,或者我是否需要做一些类似于设置学习阶段标志的事情(就像第二种方法中所做的那样)。

jtoj6r0c

jtoj6r0c1#

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

相关问题