考慮這個問題,我有一個輸出矢量如下所示:檢查標籤
[0.1, 0.3, 0.6, 0.4, 0.1, 0.5, 0.6 , . . .]
和目標標籤這樣的:
[ 0 , 0 , 1 , 0 , 0 , 1 , 1 , . . .]
輸出並且目標標籤是三乘三表示特定標籤(即,logits [0.1, 0.3, 0.6]
和相關目標標籤[0, 0, 1]
),
在原來的問題其實不是3,但84和標籤和輸出矢量的長度非常大(約500萬),並在大多數情況下(約90%)相關標籤沒有1,所以沒有需要計算該輸出的損失,
現在我的問題是,如何忽略那些在相關標籤中沒有1的輸出?
或換句話說如何在培訓期間檢查標籤以計算損失?
有我的損失函數:
score_split = tf.split(1, 64800, scores)
score_split_output = [tf.nn.softmax(c) for c in score_split]
output = tf.concat(1, score_split_output)
total_loss = tf.reduce_mean(-tf.reduce_sum(labels * tf.log(output), [1]))
我84 (5,443,200/64,800 = 84)
得分除以84,並給他們使用SoftMax,然後CONCAT並計算損失。
感謝您的答覆,但我不能改變輸入數據格式,或忽略一些標籤,可以考慮我的問題是這樣的:以高分辨率圖像的一半作爲輸入,並預測另一半,逐像素,所以我想預測每個像素,並且一些像素將是空的,因此相關的單熱標籤沒有1這種情況 –
我在說的是,你可以動態地添加第85列到你的輸入標籤。 – user1735003
當然,我可以做到這一點,但它沒有任何意義,我想通過忽略不計算損失(不計算損失)的計算來減少計算的複雜性,但通過添加第85列,我仍然有相同的計算複雜度 –