我将EfficientNet模型(https://keras.io/api/applications/efficientnet/#efficientnetb0-function)与ImageNet中的权重一起使用,并且我想使用自定义的顶部,因此我说了top = False
。我现在想知道,当我使用以下代码时,EfficientNet的权重是否冻结并且是否没有得到重新训练(这就是我想要的)?
efnB0_model = efn.EfficientNetB0(include_top=False, weights="imagenet", input_shape=(224, 224, 3))
efnB0_model.trainable = False
还是我必须使用其他代码?
非常感谢!
答案 0 :(得分:2)
您所做的工作是可行的,但人们通常会逐层进行,因为您最终可能会决定取消冻结某些层:
for layer in model.layers:
layer.trainable = False
model.layers
返回一个列表,因此您也可以仅解冻最后几层:
for layer in model.layers[-10:]:
layer.trainable = False
您可以验证可以使用什么训练
model.trainable_variables
[]
在这种情况下,什么都没有。