tensorflow 訓練最后預測結果為一個定值,可能的原因


訓練一個分類網絡,沒想到預測結果為一個定值。

找了很久發現,是因為tensor的維度的原因。  注意:我說的是我的label數據的維度。

我的輸入是:

y_= tf.placeholder(tf.int32,[None,1])  #維度:(batchsize,1)

我使用的損失函數:

loss = -y_*log(pred)
pred = tf.softmax(wx+b)  #維度:(batch_size,10034) 

 

所以我需要將y_的 維度轉化為(batch_size,10034)

我使用的是

y__ = tf.one_hot(y,10034)   #維度是:(batch_size,1,10034),而不是我們的預期:(batch_size,10034)

顯然這時有問題的,所以才會在坑中轉了好久。

tf.one_hot()的輸入數據為一維數組。

正確方法:

y1 = tf.reshape(y_,[-1])     # 變成一維數組(batch_size,)
y__ = tf.one_hot(y1,10034)    # (batch_size,10034)
loss = tf.reduce_mean(-tf.reduce_sum(y__*log(pred),reduction_indices=[1]))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM