Tensorflow調用tf.square遇到的一個問題(方差的維度增加)

Tensorflow調用tf.square遇到的一個問題

問題介紹

該問題是在訓練全連接網絡中發現loss振盪遇到的。
問題如下:
調用tf.square(y - y_pred)發現返回值是一個n*n的張量。
(注:這裏的yy_pred都是一維向量,y是訓練數據中的真實值,y_pred是預測值)

原因

導致該問題的原因是因爲yy_pred的維度不對應。
例如: y是利用pandas導入,再使用np.array(y),得到的shape是(10, );而y_pred是利用神經網絡訓練後,得到的形式是TensorShape([10, 1])
即是使用一個一維的張量減去一個二維的張量,故而最後y - y_pred得到的是一個n*n的二維張量。

解決

解決方法就是統一維度,可以把y變二維,也可以把y_pred變一維,本人常常做的事y變二維。
一個簡單的y = y.reshape(n, 1)搞定
維度變化視情況而定,如果y是多維的,也可以直接打印出y_pred是shape,然後用reshape進行維度統一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章