當前位置:成語大全網 - 書法字典 - Tensorflow訓練好的模型,怎麽叫?

Tensorflow訓練好的模型,怎麽叫?

基本用途

使用TensorFlow,您必須了解TensorFlow:

用圖來表示計算任務。

該圖在稱為會話的上下文中執行。

用張量來表示數據。

狀態由變量維護。

Feed和fetch可用於為任意操作賦值或從中獲取數據。

總結

TensorFlow是壹個編程系統,它使用圖形來表示計算任務。圖中的節點稱為OP。

(操作的縮寫)。壹個op獲得0個或多個張量,執行計算,

生成0個或多個張量。每個張量都是壹個類型化的多維數組。

例如,您可以將壹小組圖像表示為四維浮點數組。

這四個維度是【批次、高度、寬度、渠道】。

張量流圖描述了計算過程。為了進行計算,必須在進程中啟動圖表。

會話將圖得操作分配給CPU或GPU等設備,並提供執行操作得方法.

執行這些方法後,返回生成的張量。在Python語言中,返回的張量是

Numpy ndarray對象;在C和C++語言中,返回的張量是

張量流::tensorinstance。

計算圖

TensorFlow程序通常分為構建階段和執行階段。在構建階段,op的執行步驟

被描述為壹個圖表。在執行階段,會話用於執行執行圖中的op。

例如,通常在構造階段創建壹個圖來表示和訓練神經網絡,然後在執行階段重復執行圖中的訓練op。

TensorFlow支持C、c++和Python編程語言。目前TensorFlow的Python庫比較好用。

它提供了大量的輔助函數來簡化構建圖的工作,這些功能是C和C++庫所不支持的。

三種語言的會話庫是壹致的。

建築圖

構建圖的第壹步是創建壹個源op(源op)。源op不需要任何輸入,例如常數。源op的輸出被傳遞給其他op進行操作。

在Python庫中,op構造函數的返回值代表構造的op的輸出,這些返回值可以傳遞給其他人。

Op構造函數作為輸入。

TensorFlow Python庫有壹個默認圖形,OP構造函數可以為其添加節點。這個默認的圖形對

很多節目就夠了。閱讀Graph類文檔。

了解如何管理多個圖表。

將張量流作為tf導入

#創建壹個常數op來生成壹個1x2的矩陣。此操作被視為壹個節點。

#添加到默認圖表。

#

#構造函數的返回值表示常量op的返回值。

matrix1 = tf.constant([[3。, 3.]])

#創建另壹個常數op以生成2x1矩陣。

matrix2 = tf.constant([[2。],[2.]])

#創建壹個以“matrix1”和“matrix2”作為輸入的矩陣乘法運算。

#返回值“乘積”表示矩陣乘法的結果。

product = TF . mat mul(matrix 1,matrix2)

默認圖現在有三個節點,兩個constant() op和壹個matmul() op,以便真正執行矩陣乘法並得到矩陣乘法。

因此,您必須在進程中啟動此圖表。

在會話中啟動圖表。

該圖只能在構建階段完成後開始。啟動圖的第壹步是創建壹個會話對象。如果沒有創建參數,

會話構造函數將啟動默認的圖。

要獲得完整的會話API,請閱讀Session類。

#啟動默認圖表。

sess = tf。會話()

#調用sess的' run()'方法執行矩陣乘法op,傳入' product '作為該方法的參數。

#如上所述,‘product’代表矩陣乘法op的輸出,它被傳入以顯示我們想要檢索它的方法。

#矩陣乘法運算的輸出.

#

#整個執行過程是自動化的,會話負責傳遞op所需的所有輸入,OP通常是並發執行的。

#

#函數調用“run(product)”觸發了圖中三個運算(兩個常數運算和壹個矩陣乘法運算)的執行。

#

#返回值“result”是壹個numpy“ndarray”對象。

結果= sess.run(產品)

打印結果

# = = & gt[[ 12.]]

#任務完成,關閉會話。

sess.close()

會話對象需要在使用後關閉以釋放資源。除了顯式調用close,還可以使用“with”代碼塊。

自動完成關閉動作。

用tf。會話()作為會話:

結果= sess . run([產品])

打印結果

在實現中,TensorFlow將圖形定義轉化為分布式操作,以充分利用可用的計算資源(如CPU)

或者GPU)。壹般不需要明確指定使用CPU還是GPU,TensorFlow可以自動檢測。如果檢測到GPU,TensorFlow

將嘗試使用找到的第壹個GPU來執行操作。

如果機器上有多個可用的GPU,默認情況下,除了第壹個之外的其他GPU不參與計算。為了使張量流

要使用這些GPU,必須顯式地將op分配給它們來執行。隨著...設備語句來分配特定的CPU或GPU。

執行操作:

用tf。會話()作為會話:

使用tf.device("/gpu:1 "):

matrix1 = tf.constant([[3。, 3.]])

matrix2 = tf.constant([[2。],[2.]])

product = TF . mat mul(matrix 1,matrix2)

...

設備由字符串標識。當前支持的設備包括:

"/cpu:0 ":機器的cpu。

"/gpu:0 ":機器的第壹個gpu,如果有的話。

“/gpu:1”:機器的第二個gpu,以此類推。

閱讀關於使用GPU的章節,了解更多關於使用TensorFlow GPU的信息。

交互式使用

文檔中的Python示例使用會話來

啟動圖形並調用Session.run()方法來執行操作。

為了便於使用Python交互式環境,如IPython,您可以使用

交互式會話替換

會話類,使用Tensor.eval()

和Operation.run()方法。

Session.run()。這可以避免使用變量來保存會話。

#進入互動TensorFlow會話。

將張量流作為tf導入

sess = tf。交互式會話()

x = tf。變量([1.0,2.0])

a = tf .常數([3.0,3.0])

#使用初始值設定項op的run()方法初始化“x”

x.initializer.run()

#添加壹個減法子運算,從“x”中減去“a”。運行減法運算並輸出結果。

sub = TF sub(x,a)

打印子評估()

# = = & gt[-2.-1.]

張量

TensorFlow程序使用張量數據結構來表示所有數據。在計算圖中,運算之間傳遞的數據是張量。

妳可以把tensorFlow張量想象成壹個n維數組或者列表。張量包含靜態類型秩,以及。

壹個形狀。要了解TensorFlow如何處理這些概念,請參見。

等級、形狀和類型

可變的

變量以了解更多詳細信息。

變量在圖形執行期間維護狀態信息。下面的例子演示了如何使用變量來實現壹個簡單的計數器。看吧。

變量章節了解更多細節。

#創建壹個變量,並將其初始化為標量0。

狀態= tf。變量(0,name="counter ")

#創建壹個op,其作用是將狀態增加1。

one = tf.constant(1)

new_value = tf.add(state,one)

update = tf.assign(狀態,新值)

#啟動圖表後,必須首先通過` initialization ` (init) op初始化變量。

#首先,您必須將初始化操作添加到圖表中。

init _ op = TF . initialize _ all _ variables()

#啟動圖表並運行操作。

用tf。會話()作為會話:

#運行“初始化”操作

sess.run(init_op)

#打印“狀態”的初始值

打印sess.run(狀態)

#運行op,更新“狀態”並打印“狀態”

for _ in範圍(3):

sess.run(更新)

打印sess.run(狀態)

#輸出:

# 0

# 1

# 2

# 3

代碼中的assign()操作是圖中描述的表達式的壹部分,就像add()操作壹樣。所以當調用run()時

在執行表達式之前,它並不真正執行賦值操作。

通常,統計模型中的參數被表示為壹組變量。例如,您可以將神經網絡的權重作為變量存儲在張量中。

在訓練過程中,通過重復運行訓練圖來更新張量。

取得

為了檢索操作的輸出,在用Session對象的run()調用執行圖時,可以傳入壹些張量。

這些張量將幫助妳檢索結果。在前面的示例中,我們只檢索了單個節點狀態,但是您也可以檢索多個節點。

張量:

input1 = tf.constant(3.0)

input2 = tf.constant(2.0)

input3 = tf.constant(5.0)

intermed = tf.add(輸入2,輸入3)

mul = tf.mul(input1,intermed)

用tf。會話()作為會話:

result = sess.run([mul,intermed])

打印結果

#輸出:

#[數組([ 21。],dtype=float32),數組([ 7。],dtype=float32)]

需要獲得的多個張量值在op的壹次運算中壹起獲得(而不是逐個獲得張量)。

飼料

上面的例子在計算圖中引入了張量,並以常量或變量的形式存儲。TensorFlow還提供了壹種饋送機制,它

張量在圖中的任何操作都可以被暫時取代。補丁可以提交給圖中的任何操作,張量可以直接插入。

Feed臨時用張量值替換運算的輸出。您可以提供提要數據作為run()調用的參數。

提要只在調用它的方法中有效。當該方法結束時,提要將消失。最常見的用例是將壹些特殊操作指定為“feed”操作。

標記的方法是使用tf.placeholder()為這些操作創建占位符。

input 1 = TF . placeholder(TF . float 32)

input 2 = TF . placeholder(TF . float 32)

輸出= tf.mul(輸入1,輸入2)

用tf。會話()作為會話:

print sess.run([output],feed_dict={input1:[7。],輸入2:[2。]})

#輸出:

#[數組([ 14。],dtype=float32)]

查看更大規模的提要示例。

如果沒有正確提供提要,feed,placeholder()操作將生成壹個錯誤。

MNIST全連接飼料教程

(源代碼)

給出了壹個大規模使用feed的例子。