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...