如何解决冻结TensorFlow2层
我有一个用于MNIST数据集的LeNet-300-100密集神经网络,我想冻结在前两个隐藏层中分别包含300和100个隐藏神经元的前两个层。我只想训练输出层。我要做的代码如下:
from tensorflow import keras
inner_model = keras.Sequential(
[
keras.Input(shape=(1024,)),keras.layers.Dense(300,activation="relu",kernel_initializer = tf.initializers.GlorotNormal()),keras.layers.Dense(100,]
)
model_mnist = keras.Sequential(
[keras.Input(shape=(1024,inner_model,keras.layers.Dense(10,activation="softmax"),]
)
# model_mnist.trainable = True # Freeze the outer model
# Freeze the inner model-
inner_model.trainable = False
# Sanity check-
inner_model.trainable,model_mnist.trainable
# (False,True)
# Compile NN-
model_mnist.compile(
loss=tf.keras.losses.categorical_crossentropy,# optimizer='adam',optimizer=tf.keras.optimizers.Adam(lr = 0.0012),metrics=['accuracy'])
但是,这段代码似乎并没有冻结前两个隐藏层,它们也在学习中。我在做什么错了?
谢谢!
解决方法
解决方案:在定义神经网络模型时使用“可训练”参数来冻结模型的所需层,如下所示-
message.guild.members.fetch
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。