我如何在神经网络中赋予某些输出比其他输出更多的权重?



假设我有一个有5个输出的神经网络:

[o1, o2, o3, o4, o5]

如何给予o5更多的权重?因此,在计算成本函数时,o5将比其他任何输出都有更大的影响。

例如,o1的误差为0.1,o5的误差为0.1。o5的误差对代价函数的影响应该大于o1的误差。

具体来说,我希望在tensorflow/keras中做到这一点。


另一个更详细的例子:

[o1, o2, o3, o4]都是0到1之间的值,代表了与平均房价的几个偏差。

o5为0 ~ 1之间的值,代表卖房人的紧迫感;不管他们是否急于卖出

o1, o2, o3, o4的轻微不准确not和2005年的不准确性一样重要

model.compile()中有一个可选参数loss_weights。下面是文档中对该参数的描述:

指定标量系数的可选列表或字典(Python浮点数)对不同模型输出的损失贡献进行加权。由模型最小化的损失值将会是所有个人损失的加权总和,由loss_weights加权系数。如果是列表,则期望它与列表具有1:1的映射关系模型的输出。如果是字典,则期望映射输出名称(字符串)到标量系数

所以在你的例子中,你需要创建一个字典,如下所示

loss_weights{'o1':1.0
'o2':1.0
'o3':1.0
'o4':1.0
'o5':5.0}

上面字典中的o5对损失函数的影响是其他输出的5倍。根据需要设置这些值,以匹配每个输出的重要性。注:model.compile setloss_weights=loss_weights

使用compile()loss_weights参数。见这里https://www.tensorflow.org/api_docs/python/tf/keras/Model#compile.

相关内容

  • 没有找到相关文章

最新更新