Tensorflow 基本操作(三)

2021-10-04 04:43:25 字數 4070 閱讀 4176

常量:常量是其值不能改變的張量。

變數:當乙個量在會話中的值需要更新時,使用變數來表示。

佔位符:用於將值輸入 tensorflow 圖中。它們可以和 feed_dict 一起使用來輸入資料。(在會話中執行計算圖時,可以為佔位符賦值) 注意

常量儲存在計算圖的定義中,每次載入圖時都會載入相關變數。即常量占用記憶體。

變數在使用前需要被顯示初始化,變數是分開儲存的,可以儲存在引數伺服器上。

佔位符不包含任何資料,因此不需要初始化。

宣告乙個標量常量:

t1=tf.constant(

4)

形如[1,2]的常量向量宣告:

t2=tf.constant([4

,5,6

,7])

建立乙個所有元素為零的張量,可以使用 tf.zeros() 函式。這個語句可以建立乙個形如 [a,b] 的零元素矩陣,資料型別(dtype)可以是 int32、float32 (int32表示可以存放32位長度的整數,float32同理)

tf.zeros([a,b],tf.dtype)

例如

zero_t = tf.zeros([2

,3],tf.int32)

# 結果是2x3的全零矩陣:[[0 0 0],[0 0 0]]

還可以建立與現有 numpy 陣列或張量常量具有相同形狀的張量常量,例如:

tf.zeros_like(t2)

#建立的是乙個和t2形狀相同的全零矩陣

tf.ones_like(t2)

#建立的是乙個和t2形狀相同的全1矩陣

建立乙個形如 [m,n]所有元素都設為 1 的張量:

tf.ones(

[m,n]

,tf,dtype)

例如:

ones_t = tf.ones([2

,3],tf.int32)

# 結果是2x3的全1矩陣:[[1 1 1],[1 1 1]]

tf.linspace(start,stop,num)
相應的值為 (stop-start)/(num-1)

例如:

range1 = tf.linspace(

2.0,

5.0,5)

#得到:[2. 2.75 3.5 4.25 5.]

tf.

range

(start,limit,delta)

例如:

range_t = tf.

range(10

)#得到:[0 1 2 3 4 5 6 7 8 9]

tensorflow 允許建立具有不同分布的隨機張量:

1.建立乙個具有一定均值(預設值=0.0)和標準差(預設值=1.0)、形狀為 [m,n] 的正態分佈隨機數組

2.建立乙個具有一定均值(預設值=0.0)和標準差(預設值=1.0)、形狀為 [m,n] 的截尾正態分佈隨機數組:

3.要在種子的 [minval(default=0),maxval] 範圍內建立形狀為 [m,n] 的給定伽馬分布隨機數組,請執行如下語句:

4.要將給定的張量隨機裁剪為指定的大小,使用以下語句:

tf.random_crop(t_random,[2

,5],seed=12)

#t_random 是乙個已經定義好的張量。這將導致隨機從張量 t_random 中裁剪出乙個大小為 [2,5] 的張量

當需要以隨機的順序來呈現訓練樣本時可以使用 tf.random_shuffle() 來沿著它的第一維隨機排列張量:

tf.random_shuffle(t_random)

# t_random 是想要重新排序的張量

5.隨機生成的張量受初始種子值的影響。要在多次執行或會話中獲得相同的隨機數,應該將種子設定為乙個常數值。當使用大量的隨機張量時,可以使用 tf.set_random_seed() 來為所有隨機產生的張量設定種子。以下命令將所有會話的隨機張量的種子設定為 54:

tf.set_random_seed(54)

種子只能有整數值

變數通過使用變數類來建立。變數的定義還包括應該初始化的常量/隨機值。

例如

rand_t=tf.random_unifrom([50

,50],

0,0,seed=0)

t_a=tf.variable(rand_t)

t_b=tf.variable(rand_t)

#建立了兩個不同的張量變數 t_a 和 t_b。兩者將被初始化為形狀為 [50,50] 的隨機均勻分布,最小值=0,最大值=10

#tf.variable(initializer,name),引數initializer是初始化引數,name是可自定義的變數名稱

注意:變數通常在神經網路中表示權重和偏置

(y=ax+b,a就是權重,b就是偏置)

佔位符用於將資料提供給計算圖

1.定義佔位符:

tf.placeholder(dtype,shape=

none

,name=

none

)#dtype 定佔位符的資料型別,並且必須在宣告佔位符時指定

2.例如為 x 定義乙個佔位符並計算 y=2*x,使用 feed_dict 輸入乙個隨機的 4×5 矩陣:

需要注意

所有常量、變數和佔位符將在**的計算圖部分中定義。如果在定義部分使用 print 語句,只會得到有關張量型別的資訊,而不是它的值。

為了得到相關的值,需要建立會話圖並對需要提取的張量顯式使用執行命令

print

(sess.run(t1)

)

在需要大規模的常量張量物件的情況下,為了優化記憶體,最好將它們宣告為乙個可訓練標誌設定為 false 的變數:

t_large = tf.varible(large_array,trainable =

false

)

所有的 tensorflow 資料型別都是基於 numpy 的,使用tf.convert_to_tensor() 可以將給定的值轉換為張量型別,並將其與 tensorflow 函式和運算子一起使用。該函式接受 numpy 陣列、python 列表和 python 標量,並允許與張量物件互操作。

與 python/numpy 序列不同,tensorflow 序列不可迭代

例如:

for i in tf.

range(10

)#會報錯為:

#typeerror("'tensor'object id not iterable.")

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初學基本操作

比如有temp var tf.variable 1,2,3 4,5,6 7,8,9 10,11,12 想要取出來的行為idx tf.constant 0,2 那麼相應的操作為 rows tf.gather temp var,idx gather nd 比gather還要更強勢 def top k i...

Tensorflow 基本操作(五)

tensorflow 使用 tensorboard 來提供計算圖形的圖形影象。tensorboard 也可以提供有關網路執行的量化指標。它讀取 tensorflow 事件檔案,其中包含執行 tensorflow 會話期間生成的摘要資料。使用 tensorboard 的第一步是確定想要的 op 摘要....