TensorFlow學習筆記(一):TF基本操作
一.TensorFlow基本執行流程如下:
使用圖 (graph) 來表示計算任務.
在被稱之為 會話 (Session) 的上下文 (context) 中執行圖.
使用 tensor 表示資料.
通過 變數 (Variable) 維護狀態.
使用 feed 和 fetch 可以為任意的操作(arbitrary operation) 賦值或者從其中獲取資料
二.詳細介紹
1.op:
op為圖中的節點,每一個op獲得來自其他op產生並傳遞的0個或多個tensor,執行計算後,產生0個或多個tensor。
2.tensor:
tensor的漢語翻譯是張量,張量概念是向量概念的推廣,向量是一階張量。張量是一個可用來表示在一些向量、標量和其他張量之間的線性關係的多線性函式。在tensorflow中用tensor作為資料結構。
在tensorflow中用tensor資料結構來代表所有資料結構。op之間傳遞的資料都是tensor
其中tensor有三個屬性:Rank(階),Shap(形狀),Type(資料型別)
① Rank
簡單的來說就是有幾層方括號就是幾階tensor
②Shape
方括號中有幾個元素,就是幾維
③Type
Type可以為一個張量指定下列資料型別中的任意一個型別:
3.構建圖
建立源op,源op無任何的輸入,例如常量(constant)。源op的輸出被當做其他與該op連線的op的輸入。
import tensorflow as tf
matrix2=tf.constant ([[2.],[2.])
matrix1=tf.constant([3.,3.])
product=tf.matmul(matrix1,matrix2)
上述程式碼建立了2*1的矩陣matrix2 和 1×2的矩陣matrix1。product位兩矩陣的乘。
4.在會話(Session)中啟動圖
method 1:
sess=tf.Session()
result=sess.run(product)
print(result)
sess.close()
method 2:
with tf.Session() as sess:
result=sess.run(product)
print(result )
5.通過變數(Variable)維護狀態
①建立變數,初始化為標量0
state=tf.Variable(0,name='counter')
②建立一個op,其作用是使變數加1
one=tf.constant(1)
new_value=tf.add(state,one)
update=tf.assign(state,new_value)
程式碼中 assign() 操作是圖所描繪的表示式的一部分,是用來更新模型中變數的值的。 正如 add() 操作一樣. 所以在呼叫 run() 執行表示式之前, 它並不會真正執行賦值操作。
③啟動圖後,變數必須先初始化op
init_op=tf.global_variables_initializer()
④啟動圖,執行op
with tf.Session() as sess:
sess.run(init_op)
print sess.run(state)
for _ in range(3):
sess.run(update)
print sess.run(state)