1. 程式人生 > >Tensorflow 學習筆記(1)

Tensorflow 學習筆記(1)

Tensorflow 學習筆記(1)
tensorflow:tensor 和 flow。
tensor:張量,多維陣列。(表明資料結構)
flow:資料流,表達張量之間通過計算相互轉化的過程。
TensorFlow 是一個通過計算圖的形式來表述計算的程式設計系統 。TensorFlow中的每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。
計算圖:
tf.get_default_graph():獲取當前預設的計算圖。
tf.Graph():生成新的計算圖。不同計算圖上的張量和運算不共享。
tf.Variable():variable 且以大寫字母開頭,該函式在於定義一個變數;
tf.get_variable():可根據 name 值,返回該變數,如果該 name 不存在的話,則會進行建立。

tf.global_variables_initializer().run():變數初始化,在sess之前,對之前定義的變數需要初始化。
命名:
tf.variable_scope(reuse=True)可以讓變數有相同的命名,包括tf.get_variable得到的變數,還有tf.Variable的變數
tf.name_scope可以讓變數有相同的命名,只是限於tf.Variable的變數.reuse為是否共享。########在sess.run(tf.get_variable(“name”))上,需要加入tf.variable_scope()#######
如果tf.variable_scope函式使用引數reuse=None或者reuse=False建立上下文管理器,則tf.get_variable函式可以建立新的變數。但不可以建立已經存在的變數即為同名的變數。

TensorFlow 支援 14 種不同的型別, 主要包括了實數( tf.醜oat32 、 tf.float64 )、整數( tf.int8 、 tf.intl 6 、 tf.int32 、 tf.int64 、 tf.uint8 )、布林型 C tf.bool) 和複數( tf.complex64 、tf.complex128 ) 。
會話
通過 ConfigProto Protocol BufferCD來配置需要生成的會話。config = tf.ConfigProto(al low soft placement=True,
log_device_placem ent=True)
sess1= tf.InteractiveSession(config=conf ig)
sess2 = tf.Session(config =config)
通過 ConfigProto 可以配置類似並行的執行緒數、 GPU 分配策略、運算超時時間等引數。
在這些引數中,最常使用的有兩個。第 一個是 allow_so位_placement ,這是一個布林型的引數,當它為 True 時, 在以下任意一個條件成立時, GPU 上的運算可 以放到 CPU 上進行 :

1.  運算無法在 GPU 上執行 。
2. 沒有 GPU 資源(比如運算被指定在第 二個 GPU 上執行 ,但是機器只有一個 GPU ) 。
3. 運算輸入包含對 CPU 計算結果的引用 。

這個引數的預設值為 False ,但是為了使得程式碼的可移植性更強,在有 GPU 的環境下
這個引數一般會被設定為 True 。不同的 GPU 驅動版本可能對計算的支援有略微的區別,通
過將 allow_ soft placement 引數設為 True , 當某些運算無法被當前 GPU 支援時,可 以自動
調整到 CPU 上,而不是報錯。類似地,通過將這個引數設定為 True ,可以讓程式在擁有不
同數量的 GPU 機器上順利執行。
第 二個使用得比較多的配置引數是 log
device _placement o 這也是一個布林型的引數,
當它為 True 時日誌中將會記錄每個節點被安排在 哪個裝置上以方便除錯 。而在生產環境中
將這個引數設定為 False 可以減少日誌量。
tf.InteractiveSession 。使用這個函式會自動將生成 的 會話註冊為
預設會話。sess=tf.InteractivateSession()