1. 程式人生 > >Tensorflow 入門一 (安裝配置,會話控制,變數常量,傳入值)

Tensorflow 入門一 (安裝配置,會話控制,變數常量,傳入值)

Tensorflow:

TensorFlow是谷歌基於DistBelief進行研發的第二代人工智慧學習系統,主要是深度神經網路模型。 也是一時興起開始學習這玩意,走到哪,部落格寫到哪裡,全當記錄。
主要參考資料一方面是0.8.0版極客學院翻譯版資料,另一方面是油管上週莫煩的視訊資料(附上地址:https://www.youtube.com/user/MorvanZhou/featured)

安裝配置:

因為不支援Windows系統,只能在Mac或Linux上使用,因此Windows系統可以裝個VM虛擬機器。 官網是提供了pip, Docker, Virtualenv, Anaconda 等多種方法安裝TensorFlow,但是我只走了pip這一條路。 本人使用的是Ubuntu 64位版本,沒有多少坑,直接跟著官網走就行(比以前搞得Xamarin,RN之類的要順暢不知道多少倍),順心不少。 0.8.0版本:
安裝pip python2.7版本:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
python3.4版本:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python3-pip python3-dev
安裝TensorFlow python2.7版本:
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
python3.4版本:
# Ubuntu/Linux 64-bit, CPU only, Python 3.4:
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl

0.11.0rc1版本: 安裝pip和0.8.0版本一樣,就不贅述了。 安裝TensorFlow python2.7
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp27-none-linux_x86_64.whl
python3.4
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp34-cp34m-linux_x86_64.whl
python3.5
# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp35-cp35m-linux_x86_64.whl
最後統一呼叫
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL

# Python 3
$ sudo pip3 install --upgrade $TF_BINARY_URL

注意:

1.以上皆為CPU only版本,TensorFlow可以使用GPU啟用版本為其運算加速,但我使用了VM虛擬機器,又是GTX1070最新顯示卡,鬼知道會出什麼岔子,因此沒有用。 2.極客學院只針對了0.8.0版本進行翻譯,沒有之後版本的。 3.Ubuntu本身自帶python3.5.2和2.7版本,不需要另行安裝。 4.3Python3.5版本的TensorFlow至少0.9.0版本。

會話控制 Session:

TensorFlow中的Session主要用於執行命令,不管你前面做了什麼,比如使用add(),mul()方法,相加也好,相乘也好,不執行Session().run()就不會執行相應的操作。 例子如下:
import tensorflow as tf

matrix1 = tf.constant([[3,3]]) #建立一行兩列矩陣
matrix2 = tf.constant([[2],[2]]) #建立兩行一列矩陣

product = tf.matmul(matrix1,matrix2) #矩陣乘法

#方法1
sess = tf.Session() 
result = sess.run(product) #啟用Session().run()才算執行
print(result)
sess.close()

#方法2
with tf.Session() as sess:
	result2 = sess.run(product)
	print(result2)
方法1是常規的Session使用方法,方法2中可以看出,Session還支援Python中的上下文管理協議with。

變數 Variable 常量 constant:

TensorFlow中建立變數,雖不需要指出變數型別,但是要在建立時表明這個是變數。變數建立方法Variable(),常量建立方法constant()。 例子如下:
import tensorflow as tf

state = tf.Variable(0,name='counter') #初始值0,名字counter
print(state.name)
one = tf.constant(1) #常量

new_value = tf.add(state, one)
update = tf.assign(state, new_value) #new_value引數替換state

init = tf.initialize_all_variables() #初始化變數,變數才會起作用

with tf.Session() as sess:
	sess.run(init)
	for i in range(3): #迴圈執行sess.run()三次,累加三次
		sess.run(update)
		print(sess.run(state)) #不能直接輸出state,必須使用sess.run(state)

傳入值 placeholder:

可以從外界傳入數值的方法,用placeholder保留一個數據的位置,之後可以在Session().run()的時候進行賦值。 例子如下:
import tensorflow as tf

#placeholder類似input
input1 = tf.placeholder(tf.float32) #需要保證placeholer的型別
input2 = tf.placeholder(tf.float32)

output = tf.mul(input1,input2) #乘法運算

with tf.Session() as sess:
	print(sess.run(output,feed_dict={input1:[7.],input2:p[2.]})) #以feed_dict形式傳入數值