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

时间:2018-06-28 20:56:19

标签: 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是否实际使用辍学以及仅在培训期间使用的类似内容。

我的问题是,如果我使用第一种方法,则会自动停用辍学,或者我需要做一些类似于设置学习阶段标记的操作(如第二种方法一样)。

1 个答案:

答案 0 :(得分:2)

是的,Model知道何时进行培训或测试,当您致电train()predict()时,标志会自动设置。