多个正分类的 TensorFlow 损失计算

Posted

技术标签:

【中文标题】多个正分类的 TensorFlow 损失计算【英文标题】:Tensorflow loss calculation for multiple positive classifications 【发布时间】:2018-07-06 10:02:07 【问题描述】:

我的标签是这样的

label = [0, 1, 0, 0, 1, 0]

表示类 1, 4 存在于匹配的样本输入中。

    如何为这样的标签创建 one-hot 编码标签? 哪种损失函数更适合这种情况(sigmoid 交叉熵、softmax 交叉熵或稀疏 softmax 交叉熵)?

【问题讨论】:

对于 one-hot 编码标签,您可以使用 sigmoid 交叉熵或 softmax 交叉熵。稀疏 softmax 交叉熵只允许索引标签。 【参考方案1】:

    没有充分的理由为此创建 one-hot 编码版本,如果您想保持输出标签大小完全相同,在您的情况下为 6,您可以t 做一个one-hot 编码的版本。

    multi-label classification 将被执行的地方,你不能(更恰当地不应该)使用softmax 作为激活。 Softmax 适用于只有一个输出可以是真值的情况。因此,在您的情况下,最好使用sigmoid cross-entropy

【讨论】:

以上是关于多个正分类的 TensorFlow 损失计算的主要内容,如果未能解决你的问题,请参考以下文章

Tensorflow:不提供梯度的自定义损失函数

tensorflow进阶篇-4(损失函数3)

Tensorflow 损失在我的 RNN 中有所不同

具有对数损失的 TensorFlow 单 sigmoid 输出与具有稀疏 softmax 交叉熵损失的两个线性输出,用于二进制分类

训练CNN模型图像分类期间的tensorflow NaN损失

损失函数tensorflow2实现——Python实战