假设我有一个有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.