TensorFlow2 0張量的典型應用

2021-09-29 18:11:43 字數 3338 閱讀 9281

1.標量

標量的典型用途之一是誤差值的表示、各種測量指標的表示,比如準確度,精度和召回率等。

import tensorflow as tf

# 隨機模擬網路輸出

out = tf.random.uniform([4

,10])

# 隨即構造樣本真實標籤

y = tf.constant([2

,3,2

,0])

# one-hot編碼

y = tf.one_hot(y, depth=10)

# 計算每個樣本的mse

loss = tf.keras.losses.mse(y, out)

# 平均mse

loss = tf.reduce_mean(loss)

print

(loss)

tf.tensor(

0.3360483

, shape=()

, dtype=float32)

2.向量

向量是一種非常常見的資料載體,如在全連線層和卷積神經網路層中,偏置張量?就

使用向量來表示。

例如 2 個輸出節點的網路層,我們建立長度為 2 的偏置向量?,並累加在每個輸出節點上:

# 模擬獲得啟用函式的輸入z

z = tf.random.normal([4

,2])

print

(z)# 模擬偏置向量

b = tf.ones([2

])print

(b)# 累加偏置

z = z + b

print

(z)tf.tensor([[

-0.38646775

0.5014004][

-1.5671092

-0.47123888][

0.13978423

0.7581109][

0.315308

-0.8128488]]

, shape=(4

,2), dtype=float32)

tf.tensor([1

.1.]

, shape=(2

,), dtype=float32)

tf.tensor([[

0.61353225

1.5014005][

-0.5671092

0.52876115][

1.1397842

1.7581109][

1.315308

0.1871512]]

, shape=(4

,2), dtype=float32)

另外,可以通過高層介面dense()方式直接建立的網路層,張量w和b儲存在類的內部,由類自動建立並管理。可以通過全連線層的 bias 成員變數檢視偏置變數b。

3.矩陣

矩陣也是非常常見的張量型別,比如全連線層的批量輸入? = [?, ???],其中?表示輸入樣本的個數,即 batch size,???表示輸入特徵的長度。

# 建立特徵長度為 4,一共包含 2 個樣本的輸入資料

x = tf.random.normal([2

,4])

# 定義w張量

# 令全連線層的輸出節點數為 3,則它的權值張量 w 的 shape 為[4,3]

w = tf.ones([4

,3])

# 定義b張量

b = tf.zeros([3

])# x@w+b運算

o = x@w + b

o218, shape=(2

,3), dtype=float32, numpy=

array([[

-0.6558767,-

0.6558767,-

0.6558767],

[-0.01086588,-

0.01086588,-

0.01086588]]

, dtype=float32)

>

x@w+b 網路層稱為線性層,在 tensorflow 中可以通過 dense類直接實現,dense 層也稱為全連線層。我們通過 dense 類建立輸入 4 個節點,輸出 3 個節點的網路層,可以通過全連線層的 kernel 成員名檢視其權值矩陣 w:

import tensorflow as tf 

from keras import layers

# 定義全連線層輸出結點為3

fc = layers.dense(3)

# 定義全連線層的輸入結點為4

fc.build(input_shape=(2

,4))

# 通過kernel成員名檢視其權值矩陣w

fc.kernel

,3) dtype=float32, numpy=

array([[

-0.32323658,-

0.29640782

,0.27804315],

[0.57349694,-

0.45690656

,0.41877365],

[0.7450305

,0.39951694

,0.072891],

[-0.2107293

,0.5728272,-

0.20536023]]

, dtype=float32)

>

4.三維張量

三維的張量乙個典型應用是表示序列訊號,它的格式是:

? = [?, ???????? ???, ??????? ???]

其中?表示序列訊號的數量,sequence len 表示序列訊號在時間維度上的取樣點數,feature len 表示每個點的特徵長度。

這個可以通過imdb 電影評價資料集自行理解,比如x_train 張量的 shape 為[25000,80],其中 25000 表示句子個數,80 表示每個句子共 80 個單詞,每個單詞使用數字編碼方式。我們通過 layers.embedding 層將數字編碼的單詞轉換為長度為 100 個詞向量:

這樣訓練集的大小即為 tensorshape([25000, 80, 100])

4.四維張量

大於 4 維的張量一般應用的比較少。

4 維張量在卷積神經網路中應用的非常廣泛,它用於儲存特徵圖(feature maps)資料,格式一般定義為[b, h, w, c]。

其中?表示輸入的數量,h/w分布表示特徵圖的高寬,?表示特徵圖的通道數。

Tensorflow2 0張量生成

tensorflow 1 tensor就是張量,多維陣列,多維列表,階表示張量的維數 dimension 維數階 名字例子 0 d標量scalar s 1 2 3 1 d向量vector v 1,2,3 2 d矩陣matrix m 1,2,3 4,5,6 7,8,9 n dn 張量tensor t ...

tensorflow2 0 建立張量2

建立全0全1張量 a tf.ones shape 3,5 print a a b tf.ones 6 print b b c tf.zeros 2,3 dtype tf.int32 print c c print 建立元素值都相同的張量 a tf.fill 3,4 3.9 print 全相同張量fi...

Tensorflow2 0學習筆記 建立張量

使用constant建立張量 使用constant函式建立張量 其中 1,5 表示張量內容,dtype表示資料型別 a tf.constant 1,5 dtype tf.int32 輸出a,a的資料型別,a的形狀 print a print a.dtype print a.shape 輸出結果 tf...