我訓練分割從圖像中機器打印文本的典範。圖像可能還包含條形碼和手寫文字。處理基礎真實圖像,以便0代表機器打印,1代表剩餘部分。我使用5層CNN,最後輸出2張地圖。Tensorflow語義分割給了零個損失
我的損失的計算方法如下:
def loss(logits, labels):
logits = tf.reshape(logits, [-1, 2])
labels = tf.reshape(labels, [-1])
cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
而且我只包含手寫文字及其相應的基礎事實是這是由1S代表空白頁一些圖片。
當我訓練模型,這些圖片我得到的0和100%的訓練精度的損失。它是否正確?這種損失如何能爲零? 對於其他包含條形碼或機器打印的圖像,我們正在獲得一些損失,它們正在收斂。
當我測試這個模型,條形碼是否正確忽略。但它只輸出機器打印和手寫文本,而我只需要機器打印。
有人能指導我在哪裏,我錯了,請!
更新1:
我用之前0.01的學習率,將其更改爲0.0001給了我一些損失,似乎收斂,但不是很好。 但是,如果高學習率會導致0的損失?
當我使用相同的模型來自Caffe與學習的0.01率也給出了一些損失,它收斂以及相比Tensorflow。
您的登錄和標籤是否是熱門編碼? – marcopah
@marcopah是的。我想我是在問題中描述的前兩行丟失函數中這樣做的。我的logits形狀爲[batch_size,num_classes],標籤的形狀爲[tens_size],正如tensorflow文檔中所推薦的。 –