最近在window上編譯了一下tensorflow的源碼,現在把自己在這個過程里遇到的問題寫下來,方便以后使用。
在編譯之前主要參考的文章的是這一篇:https://joe-antognini.github.io/machine-learning/build-windows-tf,如果沒什么問題的話,按照這個編譯應該就是可以的。但是很不幸,我在按照這個博客操作的時候還是出現了一些問題。
vs2015可以支持AVX編譯。2017支持AVX2,參考:https://software.intel.com/zh-cn/articles/tutorial-for-compiling-tensorflow-on-windows
首先是編譯器的問題,在晚上搜了很多都是用vs2015編譯的,然而機器上本來安裝的是vs2017,報錯的時候沒有仔細看是什么原因,就甩鍋給vs2017,轉用2015,其實后面的編譯過程來看未必一定需要2017。
在用CMake生成sln文件之后打開,2015直接編譯有很多錯,總結如下:
1、下載文件的問題,一些文件下載不了,那可能需要科學上網,才能解決。下載的文件放在build/downloads下面。期間一個特別奇怪的事情,就是下載a6f29d8ac48d63293f845f2253eccbf86bc28321.tar.gz這個文件的時候,總是校驗碼錯誤,導致gemmlowp這個項目編譯失敗(雖然也不知道這個項目編譯失敗有沒有關系),因此就改了Cmakefile里的檢驗碼
可以看到是一個字符串比對,因為這個字符串比對一直失敗,導致編譯出錯。
2、出現常量中有字符串的問題,這個問題主要是文件的編碼方式有問題,原來的編碼方式是utf-8with bom的,只要改成utf-8就可以完成編譯。主要是search_test.cc和re2_test.cc這兩個文件。
3、如果其實上同時又vs2017和vs2015的話,最好還是嘗試2017編譯,因為用2015打開解決方案,項目屬性里平台工具集都是v141,我在刪除了2017之后,平台工具集使用了v140,才可以正常編譯的。
整個編譯的時間比較長,需要慢慢等待,最后上一個執行的例子截圖。