在不同时期训练不同的输出

Training different outputs at different epochs

在Keras中是否有可能在多输出训练中对每个或部分输出的训练从不同的epoch开始?例如,其中一个输出将其他一些输出作为其输入。但是一开始的那些输出还为时过早,给模型带来了巨大的计算负担。我希望将其训练推迟到一段时间后的这个输出是一个自定义层,它必须对其输入应用一些图像处理操作,这是由另一个输出生成的图像,但在开始时生成的图像是毫无意义的,我认为第一个时代应用这个自定义层只是浪费时间。有没有办法做到这一点?就像我们对每个输出的损失都有权重一样,我们计算每个输出的损失是否有不同的起点?

  1. 建立一个不包含后面输出的模型。
  2. 将该模型训练到您想要的程度。
  3. 构建一个将旧模型合并到其中的新模型。
  4. 使用您想要的新损失函数编译新模型。
  5. 训练该模型。

详细说明第 3 步:Keras 模型可以像 Keras 函数中的层一样使用 API。

您可以像这样构建一个普通模型:

input = Input((100,))
x = Dense(50)(input)
x = Dense(1, activation='sigmoid')(x)
model = Model(input, x)

但是,如果您有另一个标准 Keras 模型,它可以像任何其他层一样使用。例如,如果我们有一个名为 model1 的模型(使用 Sequential()Model()keras.models.load_model() 创建),我们可以这样输入:

input = Input((100,))
x = model1(input)
x = Dense(1, activation='sigmoid')(x)
model = Model(input, x)

这相当于将每一层单独放入 model1