tensorflow2 0之one hot函式使用

2021-10-09 04:47:56 字數 2591 閱讀 2229

先了解一下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的視訊記憶體可用,如下圖 即限制了我的視訊記憶體,具體原因為什麼我也不知道,但原來的視訊記憶體小一些的顯示卡就沒有這個問題。目前的解決辦法是 官方文件解決 然後對應的中文部落格 總結一下,就是下面的兩個辦法...