1

我有多個類可以一次預測,所以我將這個問題看作是作爲真實輸出的二元標籤/類的非線性迴歸。這是多分類迴歸的良好日誌丟失嗎?

也就是說,損失函數是每個標籤的對數損失的總和,然後對批處理中的每個示例進行平均。這是我的損失功能:

prediction = tf.sigmoid(hidden_out) # Prediction output, from 0.0 to 1.0 

# Avoid infinite gradients for extreme cases 
# by remapping the prediction from 0.005 to 0.995: 
pred = prediction*0.99+0.005 

# Log loss: mean is on batch_size, sum is on labels: 
loss = tf.reduce_mean(
    tf.reduce_sum(
     - labels*tf.log(pred) - (1.0-labels)*tf.log(1.0-pred), 
     reduction_indices=1 
    ) 
) 

我懷疑這有什麼問題。我正試圖訓練一個具有殘餘初始層次的深度卷積神經網絡。由於學習速度較低,我可以很快得到一些NaN的損失值。

我的日誌丟失是否正確?有什麼建議麼?

回答

1

您可以使用已經用於多類邏輯迴歸而不是丟失的損失:sigmoid_cross_entropy_with_logits。它被精心設計以避免數值問題。

另外,不要剪裁預測,剪下漸變可能會更好。例如,參見here

+0

哦,非常感謝!我認爲這個損失函數只存在於'softmax' xent的API中。 –