多输出模型的编译选项:多重损失&减重

时间:2018-05-28 18:10:30

标签: python keras deep-learning

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

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

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

我有一个五输出型号,输出如下:

  1. 情感(多类,多标签分类)
  2. valence(回归)
  3. 唤醒(回归)
  4. 支配(回归)
  5. 年龄(多类分类)
  6. 我使用以下内容:

    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 个答案:

答案 0 :(得分:1)

  1. 那些是正确的损失功能吗?是的,很好玩。
  2. 那些是正确的重量吗?您决定培训应该如何受到各种损失的影响,主要取决于您的数据,例如,如果价格有噪音,您可能希望减轻它的重量。
  3. 这些指标是否已正确设置?第一个应该是binary_accuracy,对于回归常常mae或者使用平均绝对误差,最后一个对于多类分类是正确的。