我试图用TensorFlow实现多标签分类(即每个输出模式可以有许多活动单位)。该问题具有不平衡的类(即,比标签分布中的零多得多,这使得标签模式非常稀疏)。Tensorflow加权与S形交叉熵损失
解决此问题的最佳方法应该是使用tf.nn.weighted_cross_entropy_with_logits
函数。但是,我得到这个运行时错误:
ValueError: Tensor conversion requested dtype uint8 for Tensor with dtype float32
我不明白这里有什么问题。由于输入损失函数,我通过标签张量,该张量logits,阳性类权重,这是一个常数:
positive_class_weight = 10
loss = tf.nn.weighted_cross_entropy_with_logits(targets=labels, logits=logits, pos_weight=positive_class_weight)
有关如何解决这个任何提示?如果我只是将相同的标签和logits张量传递给tf.losses.sigmoid_cross_entropy
损失函数,那么一切正常(从Tensorflow正常运行的意义上讲,但当然,训练后的预测始终为零)。
查看相关问题here。
非常感谢,解决了这个问题。我不得不明确地将标签转换为'float32',并使用'tf.reduce_sum(...)'来减少丢失输出。 – Alberto