我可以在不重新编译的情况下训练复合模型的一部分吗?

时间:2021-07-08 22:01:16

标签: tensorflow keras

我有一个复合模型 (model_12),它由两个较小的模型 model_1model_2 组成。例如:

model12 = keras.Model(inp, model_2(model_1(inp))

我的训练过程是这样的,我想自己训练 model_2,然后在固定 model_1 的复合模型中训练 model_2,如下所示:

while True:
   ...
   model_2.trainable = True
   model_2.compile(...)
   model_2.fit(...)
   model_2.trainable = False
   model_12.compile(...)
   model_12.fit(...)

由于不断的重新编译,这非常低效。有没有更有效的方法?特别是,如果我在需要时使用可训练标志简单地编译一次这些模型,它们是否会坚持这种方式,在调用 model2 时更新 model2.fit 权重,但在调用 model_12.fit 时不会更新叫?

1 个答案:

答案 0 :(得分:1)

最初编译模型后,您可以更改其训练属性,而无需重新编译模型。