第3章 TensorFlow入門
TensorFlow是Google創造的數值運算庫,作為深度學習的底層使用。本章包括:
- TensorFlow介紹
- 如何用TensorFlow定義、編譯并運算表達式
- 如何尋求幫助
注意:TensorFlow暫時不支援Windows,你可以用Docker或虛拟機。Windows使用者可以不看這章。
3.1 TensorFlow是什麼?
TensorFlow是開源數學計算引擎,由Google創造,用Apache 2.0協定釋出。TF的API是Python的,但底層是C++。和Theano不同,TF兼顧了工業和研究,在RankBrain、DeepDream等項目中使用。TF可以在單個CPU或GPU,移動裝置以及大規模分布式系統中使用。
3.2 安裝TensorFlow
TF支援Python 2.7和3.3以上。安裝很簡單:
sudo pip install TensorFlow
就好了。
3.3 TensorFlow例子
TF的計算是用圖表示的:
- 節點:節點進行計算,有一個或者多個輸入輸出。節點間的資料叫張量:多元實數數組。
- 邊緣:定義資料、分支、循環和覆寫的圖,也可以進行進階操作,例如等待某個計算完成。
- 操作:取一個輸入值,得出一個輸出值,例如,加減乘除。
3.4 簡單的TensorFlow
簡單說一下TensorFlow:我們定義a和b兩個浮點變量,定義一個表達式(c=a+b),将表達式變成函數,編譯,進行計算:
import tensorflow as tf
# declare two symbolic floating-point scalars
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
# create a simple symbolic expression using the add function add = tf.add(a, b)
# bind 1.5 to 'a', 2.5 to 'b', and evaluate 'c'
sess = tf.Session()
binding = {a: 1.5, b: 2.5}
c = sess.run(add, feed_dict=binding)
print(c)
結果是4: 1.5+2.5=4.0。大的矩陣操作類似。
3.5 其他深度學習模型
TensorFlow自帶很多模型,可以直接調用:首先,看看TensorFlow的安裝位置:
python -c 'import os; import inspect; import tensorflow; print(os.path.dirname(inspect.getfile(tensorflow)))'
結果類似于:
/usr/lib/python2.7/site-packages/tensorflow
進入該目錄,可以看見很多例子:
- 多線程word2vec mini-batch Skip-Gram模型
- 多線程word2vec Skip-Gram模型
- CIFAR-10的CNN模型
- 類似LeNet-5的端到端的MNIST模型
- 帶注意力機制的端到端模型
example目錄帶有MNIST資料集的例子,TensorFlow的網站也很有幫助,包括不同的網絡、資料集。TensorFlow也有個網頁版,可以直接試驗。
3.6 總結
本章關于TensorFlow。總結一下:
- TensorFlow和Theano一樣,都是數值計算庫
- TensorFlow和Theano一樣可以直接開發模型
- TensorFlow比Theano包裝的好一些