Keras 中的冻结/解冻层

问题描述 投票:0回答:1

我正在使用 Keras (VGG16) 微调卷积网络模型,并且正在使用它。

要冻结除最后 3 层之外的所有图层,我将解冻所有图层,然后再次冻结除最后 3 层之外的所有图层。

conv_base.trainable = True
for layer in conv_base.layers[:-4]:
    layer.trainable = False

这可以正确完成工作。

如果我使用相反的逻辑,即仅冻结最后三层而不接触其他层,则它不起作用!

for layer in conv_base.layers[-3:]:
    layer.trainable = True

谁能解释一下这个技巧?

最好

keras conv-neural-network
1个回答
0
投票

我没看出有什么区别。

import tensorflow as tf

conv_base = tf.keras.applications.vgg16.VGG16(weights=None)

conv_base.trainable = True
for layer in conv_base.layers[:-4]:
    layer.trainable = False

for layer in conv_base.layers:
    print(int(layer.trainable), end='')

print()

conv_base.trainable = False
for layer in conv_base.layers[-4:]:
    layer.trainable = True

for layer in conv_base.layers:
    print(int(layer.trainable), end='')

结果:

00000000000000000001111
00000000000000000001111
© www.soinside.com 2019 - 2024. All rights reserved.