訓練一個分類網絡,沒想到預測結果為一個定值。
找了很久發現,是因為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]))