【发布时间】:2020-05-25 08:16:51
【问题描述】:
所以我没有在 tf.keras 中编写代码,并根据本教程使用预训练的 NN 进行微调:https://keras.io/guides/transfer_learning/#freezing-layers-understanding-the-trainable-attribute,
我在调用预训练模型时必须设置参数training=False,这样当我稍后解冻进行微调时,Batch Normalization 不会破坏我的模型。但是我如何在 keras 中做到这一点(记住:我没有在 tf.keras 中编写它)。在 keras 中是否有必要这样做?
代码:
def baseline_model():
pretrained_model = Xception(include_top=False, weights="imagenet")
for layer in pretrained_model.layers:
layer.trainable = False
general_input = Input(shape=(256, 256, 3))
x = pretrained_model(general_input,training=False)
x = GlobalAveragePooling2D()(x)
...
在调用 model = baseline_model() 时给我错误:
TypeError: call() got an unexpected keyword argument 'training'
我怎样才能做到最好?我尝试重写 tf.keras 中的所有内容,但是当我尝试这样做时,到处都会弹出错误...
编辑:我的 keras 版本是 2.3.1 和 tensorflow 2.2.0。
【问题讨论】:
标签: python tensorflow keras neural-network conv-neural-network