[英]Single loss function with multi-input multi-output model in Keras
我正在尝试使用 Keras 训练多输入 (3) 多输出 (4) model 并且我需要使用包含所有 output 预测的单一损失 function。 这些输出中的 2 个是我关心的真实 model 输出并具有相应的标签,而其他 2 个输出是我的 model 中的可学习参数,我想用它来动态更新我的真实 model 输出的损失权重。 我需要这样的东西:
model.compile(optimizer=optimizer, loss = unified_loss
统一损失应该可以访问我所有的 model 输出和相应的标签。 我正在使用tf.data.from_tensor_slices(...)
进行训练。
我发现的唯一解决方法是使用自定义训练循环,它允许这样做。 但是,我失去了很多功能,回调变得更难以实现。
有没有办法使用常规的model.compilt(...)
和model.fit(...)
来解决这个问题?
除了不是首选的自定义训练循环之外,我确实尝试了以下标准方法:
model.compile(optimizer=optimizer, loss = [loss1, loss2], loss_weights = [alpha, beta]
我尝试制作 alpha 和 beta 可学习参数,但这是不希望的,因为我有一个自定义方程,它比简单的加权和更复杂。
向您的 model 添加一个层,将损失连接到单个张量/输出中。 让您的自定义损失解析出四个值中的每一个并对它们运行必要的数学运算。 在推理期间,在没有额外层的情况下运行 model。
使用略有不同的 model 进行训练和推理的模式很常见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.