使用model.layers[ ] 从经过训练的模型中获取层,使其不可训练。
例如,
model=tf.keras.Sequential([
tf.keras.Input(shape=(28,28,1)),
tf.keras.layers.Conv2D(32,kernel_size=(3,3),activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=(2,2)),
tf.keras.layers.Conv2D(64,kernel_size=(3,3),activation='relu'),
tf.keras.layers.MaxPooling2D(pool_size=(2,2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dropout(0.5),
tf.keras.layers.Dense(10,activation='softmax')])
训练此模型后,要使前六层不可训练,使它们连续并通过提供 input_shape 构建模型。
model1=model.layers[:6]
model1=tf.keras.Sequential(model1)
model1.build((None,28,28,1))
#Setting trainable = False will make them non-trainable.
model1.trainable = False
现在,您可以向要训练的模型添加层。
model1.add(tf.keras.layers.Dense(10,activation='softmax'))
请参考这个gist。谢谢。