1. 程式人生 > >TensorFlow學習筆記(一):TF基本操作

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)