在Keras中更新时如何动态冻结特定权重?

时间:2018-07-27 06:40:55

标签: python tensorflow keras

我的问题类似于How to dynamically freeze weights after compiling model in Keras?中的问题

在这里,我有一个包含两个子模型的大模型。像这样:

layers_0 = Input(self.input_size)
with tf.name_scope('sub_1'):
    sub_1_output = sub_model_1.compute_output(layers_0)
with tf.name_scope('sub_'):
    sub_2_output = sub_model_2.compute_output(layers_0)

two_output = Add()([sub_1_output , sub_2_output ])
with tf.name_scope('Summation'):
    two_output = Conv1D()(two_output )
    two_output = Conv1D()(two_output )

output = concatenate([two_output , sub_1_output , sub_2_output ], 2)
output = Activation('tanh')(output)

self.model = Model(inputs = layers_0, outputs = output)
self.model.compile(loss = 'mse', optimizer='adam', metrics = ['accuracy'])
return self.model

这里是一个问题:如果我想仅根据“ sub_1_output”,sub_model_2和“ sub_2_output”以及tf.name_scope('Summation')下的两个卷积层和“ two_output”造成的损失来更新sub_model_1。 / p>

我知道我可以使用变量列表和多个优化器来在tensorflow中完成此任务。但是,由于最终需要将keras.model返回到其他先前的代码,并且在Keras上也实现了两个子模型,因此我希望在不修改其他先前代码的情况下完成此任务。但是我不知道如何在Keras上解决这个问题。另外,我真的不想将此任务分为三个不同的培训任务。

谢谢

0 个答案:

没有答案