- TensorFlow神經網絡到深度學習
- 張德豐編著
- 1578字
- 2021-05-19 18:18:29
1.1 TensorFlow介紹
TensorFlow可被用于語音識別或圖像識別等多項機器深度學習領域,對2011年開發的深度學習基礎架構DisBelief進行了各方面的改進,它可在小到一部智能手機、大到數千臺數據中心服務器的各種設備上運行。TensorFlow將完全開源,任何人都可以使用。
1.1.1 TensorFlow特性
目前,為什么TensorFlow在DNN研究人員和工程師中如此受歡迎?這與其自身特性息息相關,主要表現在以下幾個方面。
1.高度的靈活性
TensorFlow不是一個嚴格的“神經網絡”庫,只要可以將計算表示為一個數據流圖,就可以使用TensorFlow來構建圖,描寫驅動計算的內部循環。我們提供了有用的工具來幫助用戶組裝“子圖”(常用于神經網絡),當然用戶也可以自己在TensorFlow基礎上編寫自己的“上層庫”。定義好用的新復合操作和寫一個Python函數一樣容易,而且也不用擔心性能損耗。當然,萬一用戶發現找不到想要的底層數據操作,也可以自己寫一點C++代碼來豐富底層的操作。
2.真正的可移植性
TensorFlow在CPU和GPU上運行,如可以運行在臺式機、服務器、手機移動設備上等。想要在沒有特殊硬件的前提下,在用戶的電腦上運行一下機器學習,TensorFlow可以辦到這點。準備將用戶的訓練模型在多個CPU上規模化運算,又不想修改代碼,TensorFlow可以辦到這點。想要將用戶的訓練模型作為產品的一部分運行到手機App里,TensorFlow可以辦到這點。想要將用戶的模型作為云端服務運行在自己的服務器上,或者運行在Docker容器里,TensorFlow也能辦到。
3.將科研和產品聯系在一起
過去如果要將科研中的機器學習想法用到產品中,則需要大量的代碼重寫工作。在Google,科學家用TensorFlow嘗試新的算法,產品團隊則用TensorFlow來訓練和使用計算模型,并直接提供給在線用戶。使用TensorFlow可以讓應用型研究者將想法迅速運用到產品中,也可以讓學術性研究者更直接地彼此分享代碼,從而提高科研產出率。
4.自動求微分
基于梯度的機器學習算法會受益于TensorFlow自動求微分的能力。作為TensorFlow用戶,只需要定義預測模型的結構,將這個結構和目標函數結合在一起,并添加數據,TensorFlow將自動為用戶計算相關的微分導數。計算某個變量相對于其他變量的導數僅僅是通過擴展用戶的圖來完成的,所以用戶能一直清楚看到究竟在發生什么。
5.多語言支持
TensorFlow有一個合理的C++使用界面,也有一個易用的Python使用界面來構建和執行用戶的Graphs。用戶可以直接寫Python/C++程序,也可以利用IPython交互式界面實現TensorFlow,它可以幫用戶將筆記、代碼、可視化等有條理地歸置好。當然這僅僅是個起點——TensorFlow希望能鼓勵用戶創造自己最喜歡的語言界面,如Go、Java、Lua、JavaScript或者R。
6.性能最優化
例如,用戶有一個擁有32個CPU內核、4個GPU顯卡的工作站,想要將用戶工作站的計算潛能全部發揮出來,由于TensorFlow 給予了線程、隊列、異步操作等以最佳的支持,TensorFlow 讓用戶可以將硬件的計算潛能全部發揮出來。用戶可以自由地將TensorFlow圖中的計算元素分配到不同設備上,TensorFlow可以幫助用戶管理好這些不同副本。
1.1.2 誰可以使用TensorFlow
任何人都可以使用TensorFlow,如學生、研究員、愛好者、極客、工程師、開發者、發明家、創業者等都可以在Apache 2.0開源協議下使用TensorFlow。
TensorFlow還沒竣工,它需要被進一步擴展和上層建構。Google發布了源代碼的最初版本,并且將持續完善它。Google希望大家通過直接向源代碼貢獻或者提供反饋,來建立一個活躍的開源社區,以推動這個代碼庫的未來發展。
1.1.3 為什么Google要開源這個神器
如果TensorFlow這么好,為什么不藏起來而要開源呢?答案或許比想象中簡單:Google認為機器學習是未來新產品和新技術的一個關鍵部分。在這個領域的研究是全球性的,并且發展很快,卻缺少一個標準化的工具。通過分享這個Google認為是世界上最好的機器學習工具庫之一的工具,Google希望能夠創造一個開放的標準,來促進交流研究想法和將機器學習算法產品化。Google的工程師們確實用它來提供用戶直接用到的產品和服務,而Google的研究團隊也將在他們的許多科研文章中分享他們對TensorFlow的使用。
本節的目的是讓用戶了解和運行TensorFlow。在開始之前,讓我們先看一段使用 Python API寫的TensorFlow示例代碼,讓用戶對將要學習的內容有初步的印象。
以下代碼用Python程序生成了一些三維數據,然后用一個平面擬合它:

運行程序,輸出如下:

