gpt4 book ai didi

python - 使用 tf.keras.application 时如何获得中间输出

转载 作者:太空宇宙 更新时间:2023-11-04 09:40:06 25 4
gpt4 key购买 nike

tf.keras.application 包含很多著名的神经网络链接 VGG, densenet, mobilenet 等.以tf.keras.application.MobileNet为例,我感兴趣的不仅是最终的输出,还有中间层的输出,我如何在重新训练时得到所有这些输出网络。

可能是 model.get_output_at(index) 有帮助。但是,每次我调用这个函数,我都会得到一个DeferredTensor,因为我不能同时转发数据。有没有方便的方法?

提前致谢~

最佳答案

我建议你阅读keras documentation :

一个简单的方法是创建一个新的 Model 来输出您感兴趣的层:

from keras.models import Model

model = ... # create the original model

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 函数,该函数将在给定特定输入的情况下返回特定层的输出,例如:

from keras import backend as K

# with a Sequential model
get_3rd_layer_output = K.function([model.layers[0].input],
[model.layers[3].output])
layer_output = get_3rd_layer_output([x])[0]

同样,您可以直接构建 Theano 和 TensorFlow 函数。

请注意,如果您的模型在训练和测试阶段有不同的行为(例如,如果它使用 Dropout、BatchNormalization 等),您需要将学习阶段标志传递给您的函数:

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]

这是 fchollet 写的另一个类似的答案他自己: How can I get hidden layer representation of the given data?

关于python - 使用 tf.keras.application 时如何获得中间输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52039079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com