個人網站–> http://www.yansongsong.cn
鑑於tensorflow目前正在更新2.0版本,博主對博客也新增了適用於2.0版本動態度轉換方法,更新於 --2019//09//29
- 問題描述
在我們使用TensorFlow進行深度學習訓練時,很多時候都是與Numpy數據打招呼,例如我們csv或者照片數據等。
但是我們都知道,TensorFlow訓練時都是使用Tensor來存儲變量的,並且網絡輸出的結果也是Tensor。
一般情況下我們不會感受到Numpy與Tensor之間的區別,因爲TensorFlow網絡在輸入Numpy數據時會自動轉換爲Tensor來處理。
但是在輸出網絡時,輸出的結果仍爲Tensor,當我們要用這些結果去執行只能由Numpy數據來執行的操作時就會出現莫名其妙的錯誤。
例如,當我想要用自編碼器與解碼器輸出的結果使用matplotlib顯示時就會報錯
TypeError: Image data cannot be converted to float
解決方法
TF 1.x版本
有時候解決起來很簡單,就是錯誤比較難找到,所以我推薦的方法爲將數據進行顯式的轉化。
- Numpy2Tensor
雖然TensorFlow網絡在輸入Numpy數據時會自動轉換爲Tensor來處理,但是我們自己也可以去顯式的轉換:
data_tensor= tf.convert_to_tensor(data_numpy)
- Tensor2Numpy
網絡輸出的結果仍爲Tensor,當我們要用這些結果去執行只能由Numpy數據來執行的操作時就會出現莫名其妙的錯誤。解決方法:
with tf.Session() as sess:
data_numpy = data_tensor.eval()
TF 2.x版本(更新於2019//09//29)
- Numpy2Tensor(與1.x版本相同)
雖然TensorFlow網絡在輸入Numpy數據時會自動轉換爲Tensor來處理,但是我們自己也可以去顯式的轉換:
data_tensor= tf.convert_to_tensor(data_numpy)
- Tensor2Numpy
網絡輸出的結果仍爲Tensor,當我們要用這些結果去執行只能由Numpy數據來執行的操作時就會出現莫名其妙的錯誤。解決方法,由於2.x版本取消了session機制,開發人員可以直接執行 .numpy()方法轉換tensor:
data_numpy = data_tensor.numpy()
最後推薦一個[TF2.0視頻教程]:
我購買過了,課程質量很高,既有原理講解也有實戰演練。強烈推薦。缺點就是教的很細,看完需要挺多時間,但是深深研究下去還是有很多收穫的。可以收穫深度學習知識與技巧,也可以學會實戰編程。
現在在做活動,可以領20元紅包。。
也歡迎大家加入筆者的知識星球:「AI深度學習應用之路」
基於深度學習的理論學習與應用開發技術分享,筆者會經常分享深度學習乾貨內容,大家在學習或者應用深度學習時,遇到什麼問題也可以與我在上面交流知無不答。
幾杯奶茶的價格可以訂閱一年,出自CSDN博客專家&知乎深度學習專欄作家–小宋是呢