先了解一下one_hot要幹啥吧。來,咱先看個程式,你一定會很眼熟的。
嘿,是不是發現什麼了?
labels向量最後可以表示乘矩陣的方式,且[1 0…0]表示0,類推[0 1 0…0]表示1,這樣,可以表示 0~9總共九個數值。
one_hot的作用就是這樣的,作為儲存標籤的一種方式,用1的位置不同來區分數值。
那麼下來接詳細介紹one_hot中的引數有哪些以及引數的效果。
one_hot函式定義:
one_hot(
indices, #輸入的tensor,在深度學習中一般是給定的labels,通常是數字列表,屬於一維輸入,也可以是多維。
depth, #乙個標量,用於定義乙個 one hot 維度的深度
on_value=none, #定義在 indices[j] = i 時填充輸出的值的標量,預設為1
off_value=none, #定義在 indices[j] != i 時填充輸出的值的標量,預設為0
axis=none, #要填充的軸,預設為-1,即乙個新的最內層軸
dtype=none, #預設是int32
name=none
)
簡言之,
indices是用來確定生成的張量中哪些位置的值為on_value
其他引數好理解,重點說一下axis的取值問題。
indices為向量、矩陣(若向量大小為n,矩陣大小為w*h)事時,axis取值的不同會影響輸出的shape結構,輸出的張量shape會有以下情況:
axis
indices為向量
indices為矩陣
-1n * depth
w * h * depth
0depth * n
depth* w * h
1w * depth * h
當indices為向量時
import tensorflow as tf
labels =[0
,2,-
1,1]
#為向量
res = tf.one_hot(
indices=labels,
depth=3,
on_value=
1.0,
off_value=
0.0,
axis=-1
)print
(res)
輸出:
即當axis=-1時, shape = indices * depth
下面將axis 改為0,結果因為 shape =depth * indices
indices為矩陣時
import tensorflow as tf
labels =
[[3, 2], [1, 6], [3, 5]
]#3*2的矩陣
res = tf.one_hot(
indices=labels,
depth=10,
on_value=1,
off_value=0,
axis=-1)
print(res)
axis=-1, 結果shape = 3*2*10 即 h * w * indices
將axis改為0,結果如下,shape = 10*3*2 即indices*w*h
將 axis改為1,結果如下,shape = 3*10*2 即w*indices*h
Tensorflow2 0之卷積層實現
在 tensorflow 中,通過tf.nn.conv2d 函式可以方便地實現2d 卷積運算。tf.nn.conv2d基於輸入?和卷積核?進行卷積運算,得到輸出?其中?表示輸入通道數,表示卷積核的數量,也是輸出特徵圖的通道數。例如 in 1 x tf.random.normal 2 5,5 3 模擬...
TensorFlow2 0之RNN情感分類問題實戰
tensorflow2.0之rnn情感分類問題實戰 import tensorflow as tf from tensorflow import keras from tensorflow.keras import sequential,layers,datasets,optimizers,loss...
tensorflow2 0視訊記憶體設定
遇到乙個問題 新買顯示卡視訊記憶體8g但是tensorflow執行的時候介面顯示只有約6.3g的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...