我試圖用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