python - 多输出模型的编译选项: multiple losses & loss weighting

标签 python keras deep-learning

正如 Keras 手册中所述 -使用 Pyhton 进行深度学习-,对于多输出模型,我们需要为网络的不同头指定不同的损失函数。但由于梯度下降要求您最小化标量,因此您必须将这些损失组合成单个值才能训练模型。

非常不平衡的损失贡献将导致模型表示优先针对个体损失最大的任务进行优化,而牺牲其他任务。为了解决这个问题,您可以为损失值对最终损失的贡献分配不同的重要性级别。如果损失值使用不同的尺度,这尤其有用。

任何人都可以提供以下帮助:

我有一个具有以下输出的五输出模型:

  1. 情感(多类、多标签分类)
  2. 化合价(回归)
  3. 唤醒(回归)
  4. 优势(回归)
  5. 年龄(多类分类)

我正在使用以下内容:

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'}

这些是正确的损失函数吗?这些权重是否正确,指标设置是否正确?

最佳答案

  1. 这些是正确的损失函数吗?是的,打得很好。
  2. 这些重量合适吗?您决定训练应如何受到各种损失的影响,主要取决于您的数据,例如,如果化合价有噪音,您可能希望减少其权重,就像您所做的那样。
  3. 这些指标设置正确吗?第一个应该是 binary_accuracy,对于回归来说,通常使用 mae 或平均绝对误差,最后一个对于多类分类来说是正确的。

关于python - 多输出模型的编译选项: multiple losses & loss weighting,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571641/

相关文章:

python - 如何更改图像尺寸以使我的卷积算法正常工作

python - 检测阵列的抛物面形状部分

python - 在python中读取图中的相邻元素

python - 正则表达式捕获引号之间的字符串,尤其是当字符串以引号开头时

keras - 使用keras训练ANN分类时损失NAN

tensorflow - 属性错误 : 'Sequential' object has no attribute 'predict_proba'

python - 用python按列乘​​以两个矩阵

python - 使用 Keras 绘制学习率的准确度时,Matplotlib 返回空图

machine-learning - keras 卷积神经网络 - 输出形状

python - 在 TensorFlow 中添加多个层导致损失函数变为 Nan