正如 Keras 手册中所述 -使用 Pyhton 进行深度学习-,对于多输出模型,我们需要为网络的不同头指定不同的损失函数。但由于梯度下降要求您最小化标量,因此您必须将这些损失组合成单个值才能训练模型。
非常不平衡的损失贡献将导致模型表示优先针对个体损失最大的任务进行优化,而牺牲其他任务。为了解决这个问题,您可以为损失值对最终损失的贡献分配不同的重要性级别。如果损失值使用不同的尺度,这尤其有用。
任何人都可以提供以下帮助:
我有一个具有以下输出的五输出模型:
- 情感(多类、多标签分类)
- 化合价(回归)
- 唤醒(回归)
- 优势(回归)
- 年龄(多类分类)
我正在使用以下内容:
losses_list = {'EMOTIONS': 'binary_crossentropy',
'VALENCE': 'mse',
'AROUSAL': 'mse',
'DOMINANCE': 'mse',
'AGE': 'categorical_crossentropy'}
losses_weights = {'EMOTIONS': 1.0,
'VALENCE': 0.025,
'AROUSAL': 0.025,
'DOMINANCE': 0.025,
'AGE': 0.45}
metrics ={'EMOTIONS': 'crossentropy',
'VALENCE': 'mse',
'AROUSAL': 'mse',
'DOMINANCE': 'mse',
'AGE': 'categorical_accuracy'}
这些是正确的损失函数吗?这些权重是否正确,指标设置是否正确?
最佳答案
- 这些是正确的损失函数吗?是的,打得很好。
- 这些重量合适吗?您决定训练应如何受到各种损失的影响,主要取决于您的数据,例如,如果化合价有噪音,您可能希望减少其权重,就像您所做的那样。
- 这些指标设置正确吗?第一个应该是
binary_accuracy
,对于回归来说,通常使用mae
或平均绝对误差,最后一个对于多类分类来说是正确的。
关于python - 多输出模型的编译选项: multiple losses & loss weighting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571641/