对于多类问题,如何在张量流中惩罚一个类比另一个类损失更多?

时间:2018-09-18 09:18:48

标签: tensorflow machine-learning deep-learning conv-neural-network loss-function

假设我的模型有两个类别1和2。类别1和2具有相同数量的训练和测试数据。但是我想对第1类的损失赔偿比第2类更多,因此一类的误报率要比另一类少(我希望该模型对一类的表现要好于另一类。)。

如何在 Tensorflow 中实现这一目标?

2 个答案:

答案 0 :(得分:1)

您正在寻找的东西可能是 weighted_cross_entropy
它提供了非常紧密相关的上下文信息,类似于@Sazzad的答案,但特定于TensorFlow。引用文档:

  

这类似于sigmoid_cross_entropy_with_logits(),除了   pos_weight,允许以上调或下调权衡召回率和精度   相对于负值,权衡正误差的成本   错误。

它接受一个附加参数pos_weights。另请注意,这仅适用于 binary 分类,在您描述的示例中就是这种情况。如果除这两个类之外还有其他类,则有效。

答案 1 :(得分:0)

如果我正确理解了您的问题,则这不是张量流的概念。你可以自己写。对于二进制分类,损失是这样的

  

损失= ylogy +(1-y)log(1-y)

0级和1级的损失权重相同。因此,您可以给更多的部分更多的重量。例如

  

损失= 5 *逻辑+(1-y)log(1-y)

希望它能回答您的问题。