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



假设我的模型有两个类 Class 1 和 Class 2。类 1 和类 2 都具有相同数量的训练和测试数据。但我想惩罚类 1 的损失比类 2 更严重,以便一个类的误报数量比另一个类少(我希望模型在一个类中比另一个类表现得更好(。

如何在Tensorflow中实现这一点?

您要查找的东西可能是weighted_cross_entropy.
它给出了一个非常密切相关的上下文信息,类似于@Sazzad的答案,但特定于TensorFlow。引用文档:

这就像sigmoid_cross_entropy_with_logits()除了 pos_weight,允许人们通过向上或 降低正误差相对于负误差的成本 错误。

它接受附加参数pos_weights。另请注意,这仅适用于二元分类,您描述的示例就是这种情况。如果除了这两个类之外可能还有其他类,这将不起作用

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

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

在这里,0 类和 1 类在损失中具有相同的权重。所以你可以给更多的给某些部分更多的权重。例如

损失 =5* ylogy + (1-y(log(1-y(

希望它能回答你的问题。

相关内容

最新更新