Tensorflow基本使用

2021-08-01 04:07:15 字數 3260 閱讀 9937

使用 tensorflow, 你必須明白 tensorflow:

tensorflow 是乙個程式設計系統, 使用圖來表示計算任務. 圖中的節點被稱之為 op (operation 的縮寫). 乙個 op 獲得 0 個或多個tensor, 執行計算, 產生 0 個或多個tensor. 每個 tensor 是乙個型別化的多維陣列. 例如, 你可以將一小**像集表示為乙個四維浮點數陣列, 這四個維度分別是[batch, height, width, channels].

乙個 tensorflow 圖描述了計算的過程. 為了進行計算, 圖必須在會話裡被啟動.會話將圖的 op 分發到諸如 cpu 或 gpu 之類的裝置上, 同時提供執行 op 的方法. 這些方法執行後, 將產生的 tensor 返回. 在 python 語言中, 返回的 tensor 是 ipython 之類的 python 互動環境, 可以使用interactivesession代替session類, 使用tensor.eval()operation.run()方法代替session.run(). 這樣可以避免使用乙個變數來持有會話.

# 進入乙個互動式 tensorflow 會話.

import tensorflow as tf

sess = tf.interactivesession()

x = tf.variable([1.0, 2.0])

a = tf.constant([3.0, 3.0])

# 使用初始化器 initializer op 的 run() 方法初始化 'x'

x.initializer.run()

# 增加乙個減法 sub op, 從 'x' 減去 'a'. 執行減法 op, 輸出結果

sub = tf.sub(x, a)

print sub.eval()

# ==> [-2. -1.]

# 建立乙個變數, 初始化為標量 0.

state = tf.variable(0, name="counter")

# 建立乙個 op, 其作用是使 state 增加 1

one = tf.constant(1)

new_value = tf.add(state, one)

update = tf.assign(state, new_value)

# 啟**後, 變數必須先經過`初始化` (init) op 初始化,

# 首先必須增加乙個`初始化` op 到圖中.

init_op = tf.initialize_all_variables()

# 啟**, 執行 op

with tf.session() as sess:

# 執行 'init' op

sess.run(init_op)

# 列印 'state' 的初始值

print sess.run(state)

# 執行 op, 更新 'state', 並列印 'state'

for _ in range(3):

sess.run(update)

print sess.run(state)

# 輸出:

# 0# 1

# 2# 3

**中assign()操作是圖所描繪的表示式的一部分, 正如add()操作一樣. 所以在呼叫run()執行表示式之前, 它並不會真正執行賦值操作.

通常會將乙個統計模型中的引數表示為一組變數. 例如, 你可以將乙個神經網路的權重作為某個變數儲存在乙個 tensor 中. 在訓練過程中, 通過重複執行訓練圖, 更新這個 tensor.

為了取回操作的輸出內容, 可以在使用session物件的run()呼叫 執行圖時, 傳入一些 tensor, 這些 tensor 會幫助你取回結果. 在之前的例子裡, 我們只取回了單個節點state, 但是你也可以取回多個 tensor:

input1 = tf.constant(3.0)

input2 = tf.constant(2.0)

input3 = tf.constant(5.0)

intermed = tf.add(input2, input3)

mul = tf.mul(input1, intermed)

with tf.session() as sess:

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

print result

# 輸出:

# [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]

需要獲取的多個 tensor 值,在 op 的一次執行中一起獲得(而不是逐個去獲取 tensor)。

上述示例在計算圖中引入了 tensor, 以常量或變數的形式儲存. tensorflow 還提供了 feed 機制, 該機制 可以臨時替代圖中的任意操作中的 tensor 可以對圖中任何操作提交補丁, 直接插入乙個 tensor.

feed 使用乙個 tensor 值臨時替換乙個操作的輸出結果. 你可以提供 feed 資料作為run()呼叫的引數. feed 只在呼叫它的方法內有效, 方法結束, feed 就會消失. 最常見的用例是將某些特殊的操作指定為 "feed" 操作, 標記的方法是使用 tf.placeholder() 為這些操作建立佔位符.

input1 = tf.placeholder(tf.float32)

input2 = tf.placeholder(tf.float32)

output = tf.mul(input1, input2)

with tf.session() as sess:

print sess.run([output], feed_dict=)

# 輸出:

# [array([ 14.], dtype=float32)]

for a larger-scale example of feeds. 如果沒有正確提供 feed,placeholder()操作將會產生錯誤. mnist 全連通feed 教程 (basic usage 翻譯:@yangtze

TensorFlow基本用法

author youngkl coding utf 8 import tensorflow as tf 1 2的矩陣 mat1 tf.constant 3.3.2 1的矩陣 mat2 tf.constant 2.3.ans tf.matmul mat1,mat2 此時ans無法直接輸出 啟動預設圖 ...

Tensorflow基本操作

tensorflow常量變數定義 import cv2 import tensorflow as tf data1 tf.constant 2,dtype tf.int32 data2 tf.variable 10,name var sess tf.session print sess.run da...

Tensorflow的基本使用 機器學習筆記

學習資料 中文社群 基本概念 綜述 tensorflow 是乙個程式設計系統,使用圖來表示計算任務.圖中的節點被稱之為 op operation 的縮寫 乙個 op 獲得 0 個或多個tensor,執行計算,產生 0 個或多個tensor.每個 tensor 是乙個型別化的多維陣列.例如,你可以將一...