在不同时期训练不同的输出
Posted
技术标签:
【中文标题】在不同时期训练不同的输出【英文标题】:Training different outputs at different epochs 【发布时间】:2020-02-06 05:00:26 【问题描述】:在 Keras 中,多输出训练中的每个或部分输出的训练是否可以从不同的时期开始?例如,其中一个输出将其他一些输出作为其输入。但是一开始的这些输出还为时过早,给模型带来了巨大的计算负担。我希望将其训练推迟到一段时间后的输出是一个自定义层,它必须对其输入应用一些图像处理操作,该输入是由另一个输出生成的图像,但一开始生成的图像毫无意义,我认为第一个时代应用这个自定义层只是浪费时间。有没有办法做到这一点?就像我们对每个输出的损失都有权重一样,我们是否有不同的起点来计算每个输出的损失?
【问题讨论】:
【参考方案1】:-
构建一个不包含后续输出的模型。
将该模型训练到您想要的程度。
构建一个将旧模型合并到其中的新模型。
使用所需的新损失函数编译新模型。
训练该模型。
详细说明第 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
中的每一层单独放入。
【讨论】:
我想过使用没有最后输出的训练模型的权重,并在新模型中使用它们。你是这个意思吗?或者我加载该模型并将其连接到最后一层的输入?谢谢! @Hamed 加载模型并将其连接到您想要的任何输出/输入。查看我的编辑。以上是关于在不同时期训练不同的输出的主要内容,如果未能解决你的问题,请参考以下文章
如何修改我的T-SQL查询,以便输出基于2个不同时期出现两次或更多次的所有记录?
组合两个预训练模型的输出(在不同数据集上训练)并使用某种形式的二元分类器来预测图像