我有两个模型已经在脚本中编译和训练。现在我尝试连接第二层到最后一层,冻结所有层,添加新的可训练层。你知道吗
以下是经过培训的模型:
morf_input = keras.layers.Input([np.shape(x)[1]])
morf_layer1 = keras.layers.Dense(800,activation="tanh")(morf_input)
morf_layer2 = keras.layers.Dense(800,activation="tanh" )(morf_layer1)
morf_layer3 = keras.layers.Dense(600,activation="tanh" )(morf_layer2)
morf_layer4 = keras.layers.Dense(300,activation="tanh" )(morf_layer3)
morf_layer5 = keras.layers.Dense(50,activation="tanh" )(morf_layer4)
morf_bneck6 = keras.layers.Dense(30,activation="tanh" )( morf_layer5)
morf_output = keras.layers.Dense(2,activation="sigmoid")(morf_bneck6)
morf_model = keras.models.Model(inputs=morf_input, outputs=morf_output)
以及
color_input = keras.layers.Input([np.shape(col_x)[1]])
color_layer1 = keras.layers.Dense(800,activation="tanh")( color_input)
color_layer2 = keras.layers.Dense(800,activation="tanh" )( color_layer1)
color_layer3 = keras.layers.Dense(600,activation="tanh" )( color_layer2)
color_layer4 = keras.layers.Dense(300,activation="tanh" )( color_layer3)
color_layer5 = keras.layers.Dense(50,activation="tanh" )( color_layer4)
color_bneck6 = keras.layers.Dense(10,activation="tanh" )( color_layer5)
color_output = keras.layers.Dense(2,activation="sigmoid")( color_bneck6)
color_model = keras.models.Model(inputs= color_input, outputs= color_output)
然后我试着用:
morf_layer1.trainable = False
morf_layer2.trainable = False
morf_layer3.trainable = False
morf_layer4.trainable = False
morf_layer5.trainable = False
morf_bneck6.trainable = False
color_layer1.trainable = False
color_layer2.trainable = False
color_layer3.trainable = False
color_layer4.trainable = False
color_layer5.trainable = False
color_bneck6.trainable = False
然后用这些图层创建一个新模型
concat_layer= keras.layers.Concatenate()([morf_bneck6, color_bneck6])
con_out_layer1 = keras.layers.Dense(500,activation="tanh")(concat_layer)
con_out_layer2 = keras.layers.Dense(400,activation="tanh")(con_out_layer1)
con_out_layer3 = keras.layers.Dense(300,activation="tanh")(con_out_layer2)
con_out_layer4 = keras.layers.Dense(30,activation="tanh")(con_out_layer3)
output = keras.layers.Dense(2,activation="sigmoid")(con_out_layer4)
model = keras.models.Model(inputs=[morf_input, color_input], outputs=output)
我编写了模型
model.compile(optimizer=keras.optimizers.SGD(lr=0.008, decay=1e-6, momentum=0.9, nesterov=False),
loss='binary_crossentropy',
metrics=['accuracy'])
但是model.summary()
显示
Total params: 3,035,432
Trainable params: 3,035,432
Non-trainable params: 0
冻结层不应该增加Non-trainable
参数吗?你知道吗
因为你想冻结所有,但最后6层使用
工作示例
样本输出
请尝试以下操作:
相关问题 更多 >
编程相关推荐