Python 生成one hot標籤和恢復

2021-09-23 22:25:20 字數 1146 閱讀 4255

首先生成乙個主對角全為1的其餘全為0的矩陣,比如有n個分類就是n * n,效果如下:

隨後根據標籤列表(或者numpy陣列)選取合適的行,比如標籤是[9, 1, 0, 0], 那麼就會選擇上圖矩陣中對應的9、1、0、0行,得到one_hot標籤,如果不熟悉numpy陣列的列表切片的(就是說numpy_array[slice]中的slice是列表) ,可以看下這篇python numpy陣列使用列表索引

恢復的話就是找列表中為1的下標即可。

**如下:

# encoding = utf-8

''' author : james-j

time : 2019/05/29

'''import numpy as np

if __name__ == '__main__':

one_hot = np.eye(10) # 10*10的矩陣 對角線上是1

print('np.eye(10)\n', one_hot)

# 兩種方法 傳一維的numpy陣列和列表都可以

label = np.array([1, 4, 8, 9, 5, 0])

one_hot_label = one_hot[label.astype(np.int32)] # 表示選取矩陣上面的第幾行

# label = [1, 4, 8, 9, 5, 0]

# one_hot_label = one_hot[label]

print('-----------------one_hot--------------------')

print(one_hot_label)

label = [one_label.tolist().index(1) for one_label in one_hot_label] # 找到下標是1的位置

print('------------------label---------------------')

print(label)

得到的結果:

生成one hot的方法

def encode onehot labels classes set labels classes dict labels onehot np.array list map classes dict.get,labels dtype np.int32 return labels onehot n...

數字類別生成onehot

對應行的列 原始標籤 my label np.array 3,4,2,4,6,1 類別數量 num class 6 樣本數量 num my label.shape 0 生成onehot標籤 原理是通過numpy的陣列索引,注意不能用label my label 1 的方式,因為使用切片操作,之後會操...

記憶管理之xilinx生成網標檔案

1.將需要封裝的模組設定為頂層模組 2.更改綜合配置 more options mode out of context flatten hierachy full 3.綜合,完成後開啟綜合 4.2017.4以前版本輸入以下xx為模組名稱 輸入 write verilog mode port f fp...