在tf中,圖表示計算任務。圖中節點被稱為operation(簡稱op)。op接受tensor,執行計算,產生tensor。tensor是多維陣列。
為了進行計算,圖必須在會話裡被啟動。會話將圖的op分發到cpu之類的裝置上,同時提供執行op的方法,執行後,返回tensor結果。
tf程式通常被組織成乙個構建階段和乙個執行階段。
在構建階段,op的執行步驟被描述成乙個圖。在執行階段,使用會話執行圖中的op。
構建圖的第一步是建立源op(source op)。源op不需要任何輸入,例如常量(constant)。源op的輸出傳遞給其他op做運算。op構造器返回值代表構造出的op的輸出,返回值可以傳遞給其他op、構造器作為輸入。
構造階段完成後,才能啟**。啟**的第一步是建立會話物件,如果session無任何引數,會話構造器啟動預設圖。
# -*- coding:gb2312 -*-
import tensorflow as tf
#第一步
#構建圖
#建立乙個常量op,產生1個1行2列的矩陣,這個op稱為1個節點
#加到預設圖中
#構造器的返回值就是該op的返回值
matrix1 = tf.constant([[3, 3]])
#建立另乙個常量op,產生2x1矩陣
matrix2 = tf.constant([[2],[2]])
#建立乙個矩陣乘法matmul op。並將matrix1,matrix2作為輸入
#返回值就是乘法op的返回值
product = tf.matmul(matrix1, matrix2)
#第二步
#執行圖
#啟動預設圖
sess = tf.session()
#呼叫sess的run方法來執行矩陣乘法op,傳入product作為方法的引數
#product代表乘法op的輸出,傳入它是向run方法表明,我們希望取回矩陣乘法op的輸出
#執行過程是自動的,會話負責傳遞op所需全部輸入,op通常是併發執行的
#當函式呼叫run方法的時候,觸發了圖中三個op(2常量op,1乘法op)的執行
result = sess.run(product)
print result
#任務完成,關閉會話
sess.close()
tf中使用tensor資料結構代表所有的資料。計算圖中,操作間傳遞的資料都是tensor。可以把tensor看做是乙個n維的陣列
variable維護圖執行過程中的狀態資訊。
# -*- coding:gb2312 -*-
import tensorflow as tf
#使用變數實現乙個簡單的計數器
#建立乙個變數,初始化為標量0
state = tf.variable(0, name="counter")
#建立1個op,其作用是state加1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
#啟**後,變數必須經過初始化op
#首先增加乙個初始化op到圖中
init_op = tf.initialize_all_variables()
#啟**
with tf.session() as sess:
#初始化變數op
sess.run(init_op)
#列印state初始值
print sess.run(state)
#重複執行計數器3次,執行update op
for _ in range(3):
r = sess.run(update)
print r
為取回操作的輸出內容,可以在使用run執行圖時,傳入一些tensor,在執行op後,tensor會取回返回值結果。在前面例子中,只取回了單個節點state,但是也可以取回多個tensor。
# -*- coding:gb2312 -*-
import tensorflow as tf
x1 = tf.constant(3.0)
x2 = tf.constant(2.0)
x3 = tf.constant(5.0)
intermed = tf.add(x2, x3)
mul = tf.multiply(x1, intermed)
#在run中使用獲取多個tensor
with tf.session() as sess:
result = sess.run([mul,intermed])
print result
需要獲取的多個tensor值在一次op中同時獲得,而不是逐個獲取tensor
上述示例中在計算圖中引入了tensor,以常量或變數形式儲存。tf中還提供了feed機制,其可以臨時替代圖中的任意操作中的tensor,可以對圖中任何操作提交補丁,直接誒插入tensor。
feed使用乙個tensor的值臨時替換乙個操作的輸出結果。可以提供feed資料作為run呼叫的引數。
feed只在呼叫它的方法內有效,方法結束,feed就會消失。
# -*- coding:gb2312 -*-
import tensorflow as tf
#使用placeholder為feed操作建立佔位符
x1 = tf.placeholder("float")
x2 = tf.placeholder("float")
y = tf.multiply(x1, x2)
with tf.session() as sess:
result = sess.run(y,feed_dict=)
print result
tf卷積基礎
slim模組的conv2d函式,是二維卷積介面,順著源 可以看到最終調的tensorflow介面是convolution,這個地方就進入c 層面了,暫時不涉及。先來看看這個convolution函式,官方定義是這樣的 tf.nn.convolution input,filter,padding,st...
tf基礎知識
1 基本概念 圖 graph 圖描述了計算的過程,tensorflow使用圖來表示計算任務。張量 tensor tensorflow使用tensor表示資料。每個tensor是乙個型別化的多維陣列。操作 op 圖中的節點被稱為op opearation的縮寫 乙個op獲得0個或多個tensor,執行...
tf 矩陣行和列交換 tf矩陣基礎
一 placeholder tensorflow的設計理念稱之為計算流圖,在編寫程式時,首先構築整個系統的graph,並不會直接生效,這一點和python的其他數值計算庫 如numpy等 不同,graph為靜態的,類似於docker中的映象。然後,在實際的執行時,啟動乙個session,程式才會真正...