當前位置:
首頁 > 新聞 > 從框架優缺點說起,這是一份TensorFlow入門極簡教程

從框架優缺點說起,這是一份TensorFlow入門極簡教程

隨著 TensorFLow 在研究及產品中的應用日益廣泛,很多開發者及研究者都希望能深入學習這一深度學習框架。而在昨天機器之心發起的框架投票中,2144 位參與者中有 1441 位都在使用 TensorFlow 框架,是所有框架中使用率最高的。但 TensorFLow 這種靜態計算圖有一定的學習成本,因此也阻擋了很多初學者入坑。本文介紹了學習 TensorFlow 的系列教程,旨在通過簡單的理論與實踐幫助初學者一步步掌握 TensorFlow 的編程技巧。這一系列教程分為 6 部分,從為什麼選擇 TensorFlow 到卷積神經網路的實現,介紹了初學者所需要的技能。機器之心在本文介紹了 PyTorch 和 Caffe 等深度學習框架的優缺點及 TensorFlow 基礎,包括靜態計算圖、張量、TensorBoard 可視化和模型參數的保存等。

從框架優缺點說起,這是一份TensorFlow入門極簡教程

機器之心此前也介紹過很多 TensorFlow 的學習資源,讀者可結合這些資源閱讀該系列教程:

學習了!谷歌今日上線基於 TensorFlow 的機器學習速成課程(中文版)機器之心 GitHub 項目:從零開始用 TensorFlow 搭建卷積神經網路教程 | 從零開始:TensorFlow 機器學習模型快速部署指南分散式 TensorFlow 入坑指南:從實例到代碼帶你玩轉多機器深度學習三天速成!香港科技大學 TensorFlow 課件分享TensorFlow 從基礎到實戰:一步步教你創建交通標誌分類神經網路為什麼選擇 TensorFlow?在本文中,我們將對比當前最流行的深度學習框架(包括 Caffe、Theano、PyTorch、TensorFlow 和 Keras),幫助你為應用選擇最合適的框架。

1. Caffe:第一個主流產品級深度學習庫,於 2014 年由 UC Berkeley 啟動。

優點:

快速支持 GPU漂亮的 Matlab 和 Python 介面缺點:

不靈活。在 Caffe 中,每個節點被當做一個層,因此如果你想要一種新的層類型,你需要定義完整的前向、後向和梯度更新過程。這些層是網路的構建模塊,你需要在無窮無盡的列表中進行選擇。(相反,在 TensorFlow 中,每個節點被當做一個張量運算例如矩陣相加、相乘或卷積。你可以輕易地定義一個層作為這些運算的組合。因此 TensorFlow 的構建模塊更小巧,允許更靈活的模塊化。)需要大量的非必要冗長代碼。如果你希望同時支持 CPU 和 GPU,你需要為每一個實現額外的函數。你還需要使用普通的文本編輯器來定義你的模型。真令人頭疼!幾乎每個人都希望程序化地定義模型,因為這有利於不同組件之間的模塊化。有趣的是,Caffe 的主要架構師現在在 TensorFlow 團隊工作。專一性。僅定位在計算機視覺(但做得很不錯)。不是以 Python 編寫!如果你希望引入新的變動,你需要在 C++和 CUDA 上編程(對於更小的變動,你可以使用它的 Python 和 Matlab 介面)。糟糕的文檔。安裝比較困難!有大量的依賴包。只有少量種類的輸入格式,僅有一種輸出格式 HDF5(雖然你總是可以使用它的 Python/C++/Matlab 介面來運行,並從中得到輸出數據)。不適用於構建循環網路。2. Theano:由蒙特利爾大學研究團隊構建。Theano 的頂層構建了數值開源深度庫,包括 Keras、Lasagne 和 Blocks。Yoshua Bengio 在 2017 年 9 月 28 日宣布,Theano 的開發將終止。因此實際上 Theano 已死!

優點:

計算圖的抽象很漂亮(可媲美 TensorFlow)為 CPU 和 GPU 都做了優化很好地適應數值優化任務高級封裝(Keras、Lasagne)缺點:

原始的 Theano 只有比較低級的 APIimport numpy for _ in range(T): h = torch.matmul(W, h) + b大型模型可能需要很長的編譯時間不支持多 GPU錯誤信息可能沒有幫助(有時候令人懊惱)3. Pytorch:2017 年 1 月,Facebook 將 Python 版本的 Torch 庫(用 Lua 編寫)開源。

優點:

提供動態計算圖(意味著圖是在運行時生成的),允許你處理可變長度的輸入和輸出,例如,在使用 RNN 時非常有用。另一個例子是,在 PyTorch 中,可以使用標準 Python 語法編寫 for 循環語句。大量預訓練模型大量易於組合的模塊化組件易於編寫自己的圖層類型,易於在 GPU 上運行「Tensorboard」缺少一些關鍵功能時,「Losswise」可以作為 Pytorch 的替代品缺點:

正式文檔以外的參考資料/資源有限無商業支持4. Tensorflow:由較低級別的符號計算庫(如 Theano)與較高級別的網路規範庫(如 Blocks 和 Lasagne)組合而成。

優點:

由谷歌開發、維護,因此可以保障支持、開發的持續性。巨大、活躍的社區網路訓練的低級、高級介面「Tensorboard」是一款強大的可視化套件,旨在跟蹤網路拓撲和性能,使調試更加簡單。用 Python 編寫(儘管某些對性能有重要影響的部分是用 C++實現的),這是一種頗具可讀性的開發語言支持多 GPU。因此可以在不同的計算機上自由運行代碼,而不必停止或重新啟動程序比基於 Theano 的選項更快的模型編譯編譯時間比 Theano 短TensorFlow 不僅支持深度學習,還有支持強化學習和其他演算法的工具。缺點:

計算圖是純 Python 的,因此速度較慢圖構造是靜態的,意味著圖必須先被「編譯」再運行5. Keras:Keras 是一個更高級、對用戶最友好的 API,具有可配置的後端,由 Google Brain 團隊成員 Francis Chollet 編寫和維護。

優點:

提供高級 API 來構建深度學習模型,使其易於閱讀和使用編寫規範的文檔大型、活躍的社區位於其他深度學習庫(如 Theano 和 Tensorflow,可配置)之上使用面向對象的設計,因此所有內容都被視為對象(如網路層、參數、優化器等)。所有模型參數都可以作為對象屬性進行訪問。例如:

model.layers[3].output 將提供模型的第三層model.layers[3].weights 是符號權重張量的列表缺點:

由於用途非常普遍,所以在性能方面比較欠缺與 Tensorflow 後端配合使用時會出現性能問題(因為並未針對其進行優化),但與 Theano 後端配合使用時效果良好不像 Tensorflow 或 PyTorch 那樣靈活TensorFlow 基礎TensorFlow 是一種採用數據流圖(data flow graphs),用於數值計算的開源軟體庫。其中 Tensor 代表傳遞的數據為張量(多維數組),Flow 代表使用計算圖進行運算。數據流圖用「結點」(nodes)和「邊」(edges)組成的有向圖來描述數學運算。「結點」一般用來表示施加的數學操作,但也可以表示數據輸入的起點和輸出的終點,或者是讀取/寫入持久變數(persistent variable)的終點。邊表示結點之間的輸入/輸出關係。這些數據邊可以傳送維度可動態調整的多維數據數組,即張量(tensor)。

從框架優缺點說起,這是一份TensorFlow入門極簡教程

計算圖與會話學習 Tensorflow 的第一步是了解它的主要特色——「計算圖」方法。基本上所有的 Tensorflow 代碼都包含兩個重要部分:

1. 創建「計算圖」,表示計算的數據流

2. 運行「會話」,執行圖中的運算

事實上,TensorFlow 將計算的定義與其執行分開。這兩個部分將在以下各節中詳細說明。在此之前,請記住第一步是導入 Tensorflolibrary!

import tensorflow as tf這樣,Python 就可以訪問 TensorFlow 的所有類、方法和符號。使用此命令,TensorFlow 庫將在別名「tf」下導入,以便以後我們可以使用它而不必每次鍵入其全稱「TensorFlow」。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

報名 | 螞蟻金服舉辦首屆ATEC人工智慧大賽,百萬獎金等你來拿
解密谷歌Gmail新功能:結合BoW模型和RNN-LM,幫助用戶快速寫郵件

TAG:機器之心 |