在 Keras 中,多输出训练中每个或部分输出的训练是否可以在不同的时期开始?例如,其中一个输出将其他一些输出作为其输入。但是一开始的这些输出还为时过早,它给模型带来了巨大的计算负担。我希望将其训练推迟到稍后一段时间的输出是一个自定义层,它必须对其输入应用一些图像处理操作,该输入是由另一个输出生成的图像,但在开始时生成的图像毫无意义,我认为应用这个自定义层只是浪费时间。有没有办法做到这一点?就像我们对每个输出的损失有权重一样,我们是否有不同的起点来计算每个输出的损失?
- 构建不包含更高输出的模型。
- 将该模型训练到所需的程度。
- 构建一个将旧模型合并到其中的新模型。
- 使用所需的新损失函数编译新模型。
- 训练该模型。
详细说明第 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
。