說起 TensorFlow,就不得不說這是很多創業公司的福音,因為他們大都沒有能力去理解並開發一個與國際同步的深度學習系統,所以TensorFlow 會大大降低深度學習在各個行業中的應用難度。谷歌把這個項目開源,受到歡迎那是必然的。

在 GitHub 上,TensorFlow 從去年開始就成為了廣受歡迎的機器學習開源項目。GitHub 發布的 2017 年度開發者報告顯示,TensorFlow 是被 fork 最多的項目,其中有 7300 人為 TensorFlow 做出了貢獻。

還有一點,TensorFlow 跟我們的關係是越來越密切的。現在國內不少大型電商使用的客服就是基於 TensorFlow 開發的。在 TensorFlow 的官網上,我們可以看到,國內的小米、中興、京東等企業,也在使用 TensorFlow。

而 Google Brain 發布的可以幫你畫畫的人工智慧「Quick, Draw! 」、「AutoDraw」,也是基於 TensorFlow 開發的。

可見,Tensor Flow 是越來越貼近我們的生活了。

TensorFlow 的特徵

1.高度靈活性

TensorFlow 不是一個嚴格的「神經網路」庫。只要你可以將你的計算表示為一個數據流圖,你就可以使用 TensorFlow。當然用戶也可以自己在 Tensorflow 基礎上寫自己的「上層庫」。

萬一你發現找不到想要的底層數據操作,你也可以自己寫一點c++代碼來豐富底層的操作。

2.真正的可移植性

TensorFlow 可以在台式機,手機及伺服器等多種平台使用。如果想要在沒有特特殊硬體的前提下,想在自己的筆記本上跑一跑機器學習的新想法,TensorFlow 也能做到。與此同時,TensorFlow 還能做到將你的訓練模型在多個 CPU 上規模化運算,又不想修改代碼,將你的訓練好的模型作為產品的一部分用到手機 app 里,等等很多功能。

3.將科研和產品聯繫在一起

使用 Tensorflow 可以讓應用型研究者將想法迅速運用到產品中,也可以讓學術性研究者更直接地彼此分享代碼,從而提高科研產出率。

4.自動求微分

基於梯度的機器學習演算法會受益於 Tensorflow 自動求微分的能力。作為 Tensorflow 用戶,你只需要定義預測模型的結構,將這個結構和目標函數結合在一起,並添加數據,Tensorflow 將自動為你計算相關的微分導數。

5. 多語言支持

Tensorflow 有一個合理的c++使用界面,也有一個易用的 python 使用界面來構建和執行你的 graphs。你可以直接寫 python/c++ 程序,也可以用互動式的 ipython 界面來用 Tensorflow 嘗試些想法。

6.性能最優化

Tensorflow 給予了線程、隊列、非同步操作等以最佳的支持,Tensorflow 讓你可以將你手邊硬體的計算潛能全部發揮出來。你可以自由地將 Tensorflow 圖中的計算元素分配到不同設備上,Tensorflow 可以幫你管理好這些不同副本。

了解更多關於 Tensorflow: http://www.tensorfly.cn/

Tensorflow 遊樂場

Tensorflow 遊樂場是一個由 Tensorflow 建立起來的可以在瀏覽器中訓練神經網路的平台,在這裡,你可以親自動手訓練自己的神經網路,並且很容易的對它有一個初步的認識。

這個界面由 DATA(數據種類),FEATURES(數據特徵),HIDDEN LAYER(神經網路的層數),OUTPUT(輸出)和其他設置參數構成,對於還沒有建立起對神經網路的認識的新手來說,其他參數可以完全默認,只需要看上面四個部分即可。

DATA

這裡提供了四種類型的數據,而神經網路要做的就是,把這些數據中的橙點和藍點收集起來分析,之後給出它們現在所在以及接下來的兩種點將會在的區域。

FEATURES

分類數據最重要的是特徵,這兩種數據的特徵就是它們的坐標(X1,X2),其他的特徵都是由它們衍生而來,我們要做的就是把這些特徵輸入給神經網路,然後讓它調整權重最後得出輸出

HIDDEN LAYER

這裡的每一層的每個神經元都會對輸出進行組合,然後計算出結果,下一層的神經元則會根據上一層的輸出的準確性確定它們的比重,從而再得出輸出。

 

神經網路最大的特點在於,我們不需要完全找出一種數據的特徵,只需要有足夠多的神經網路層數和神經元,它就會自己找出最有用的特徵。

下面就是一個例子,我們把所有的特徵輸入,然後只加入一層神經元。

可以看到它成功的分離的兩種類型的點。

現在我們只輸入最基礎的兩個特徵,然後加入最多的神經元,然後就會發現瀏覽器明顯的慢了下來……

但是它依然可以完成任務。

 

神經網路的優勢就在於此,即使我們不能想出更多的特徵,只要通過多層神經網路和相當數量的神經元,就可以讓神經網路自己學到哪些特徵是最有用的。不過,最起碼我們還是要動動腦子多輸入幾個特徵,像剛才那樣加入大量的神經元已經讓瀏覽器開始變得緩慢了。