圖建立
建立和執行計算圖可能是兩個框架最不同的地方。
在pytorch中,圖結構是動態的,這意味著圖在執行時構建。
而在tensorflow中,圖結構是靜態的,這意味著圖先被「編譯」然後再執行。
pytorch中簡單的圖結構更容易理解,更重要的是,還更容易除錯。除錯pytorch**就像除錯python**一樣。你可以使用pdb並在任何地方設定斷點。除錯tensorflow**可不容易。要麼得從會話請求要檢查的變數,要麼學會使用tensorflow的偵錯程式(tfdbg)。
靈活性tensorflow:靜態計算圖,資料引數在cpu與gpu之間遷移麻煩,除錯麻煩
pytorch:動態計算圖,資料引數在cpu與gpu之間遷移十分靈活,除錯簡便
計算速度
同等條件下:
tensorflow 在cpu上執行速度比 pytorch 快
tensorflow 在gpu上執行速度和 pytorch 差不多
資料載入
tensorflow:api設計龐大,使用有技巧,但有時候不能直接把資料載入進tensorflow
pytorch:api整體設計粗糙,但載入資料的api設計很友好。載入資料的介面由乙個資料集、乙個取樣器和乙個資料載入器構成。
裝置管理
tensorflow:不需要手動調整,簡單
pytorch:需要明確啟用的裝置
關於這點,憑個人喜好,我比較喜歡手動啟用cuda_visible_devices,我個人對記憶體、視訊記憶體的管理較嚴
pytorch:
os.environ["cuda_visible_devices"] = "2"
model = nn.dataparallel(model, device_ids=self.config.device_ids).cuda()
tensorflow的裝置管理非常好用。通常你不需要進行調整,因為預設的設定就很好。例如,tensorflow會假設你想執行在gpu上(如果有的話)。而在pytorch中,即使啟用了cuda,你也需要明確把一切移入裝置。
tensorflow裝置管理唯一的缺點是,預設情況下,它會占用所有的gpu視訊記憶體。簡單的解決辦法是指定cuda_visible_devices。有時候大家會忘了這一點,所以gpu在空閒的時候,也會顯得很忙。
在pytorch中,我發現**需要更頻繁的檢查cuda是否可用,以及更明確的裝置管理。在編寫能夠同時在cpu和gpu上執行的**時尤其如此。以及得把gpu上的pytorch變數轉換為numpy陣列,這就顯得有點冗長。
numpy_var = variable.cpu().data.numpy()
Anaconda環境下安裝Tensorflow
安裝過程中會讓你選擇是否將anaconda新增到系統環境中去,此時可以勾選這個選項框,避免後期自己新增路徑。1 開啟anaconda prompt 2 為了加快其他庫的安裝速度,我們首先要替換清華源 在anaconda prompt裡輸入以下命令 conda config add channels ...
Anaconda平台下安裝tensorflow
平台 windows 版本 tensorflow2.0.0 alpha0 cpu版本 安裝方式 pip 一 安裝環境 tensorflow2.0.0的cpu版本環境需求簡單,安裝比較簡潔。二 安裝過程 anaconda安裝 在anaconda安裝不需要重新下乙個python版本,只需要後面新建乙個虛...
小白 Anaconda下安裝tensorflow
本人是笨蛋小白,安裝的時候才知道建立虛擬環境的時候,環境裡可以直接安裝不同版本的python,不必考慮anaconda本身的python版本。為了搭配tensorflow更好的學習其他人的 我安裝的的是python3.6安裝版本,tensorflow對應的版本為1.4.0 keras的版本要對應te...