model.trainable = False-重量是否冻结且无法训练?

时间:2020-07-23 17:23:09

标签: python tensorflow machine-learning keras conv-neural-network

我将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

还是我必须使用其他代码?

非常感谢!

1 个答案:

答案 0 :(得分:2)

您所做的工作是可行的,但人们通常会逐层进行,因为您最终可能会决定取消冻结某些层:

for layer in model.layers:
    layer.trainable = False

model.layers返回一个列表,因此您也可以仅解冻最后几层:

for layer in model.layers[-10:]:
    layer.trainable = False

您可以验证可以使用什么训练

model.trainable_variables
[]

在这种情况下,什么都没有。

相关问题