0

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

4

1 回答 1

1
  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 模型,则可以像使用任何其他层一样使用它。例如,如果我们有一个名为 、 或 的模型(使用 、 或 创建)Sequential()Model()我们可以这样放入:keras.models.load_model()model1

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

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

于 2019-10-08T22:18:10.380 回答