python?label與one-hot之間的互相轉(zhuǎn)換方式
label與one-hot之間的互相轉(zhuǎn)換
有時(shí)候需要label,比如強(qiáng)化學(xué)習(xí)的離散動(dòng)作空間,輸出動(dòng)作索引;有時(shí)候需要one-hot,比如訓(xùn)練數(shù)據(jù)或者輸入上一個(gè)狀態(tài)的動(dòng)作,簡單的互相轉(zhuǎn)換還是重要的。
label 轉(zhuǎn) one-hot
通過 np.eye(action_dims)[actions] 快速生成:
>>> import numpy as np >>> label = [1,2,2,3] >>> np.eye(4)[label] array([[0., 1., 0., 0.], ? ? ? ?[0., 0., 1., 0.], ? ? ? ?[0., 0., 1., 0.], ? ? ? ?[0., 0., 0., 1.]])
one-hot 轉(zhuǎn)label
numpy可以通過 np.argmax(onehot, 1) 實(shí)現(xiàn),pytorch 可以通過 torch.topk(one_hot, 1)[1].squeeze(1) 實(shí)現(xiàn):
>>> import torch >>> onehot array([[0., 1., 0., 0.], ? ? ? ?[0., 0., 1., 0.], ? ? ? ?[0., 0., 1., 0.], ? ? ? ?[0., 0., 0., 1.]]) >>> np.argmax(onehot,1) array([1, 2, 2, 3], dtype=int64) >>> torch.topk(torch.tensor(onehot), 1)[1].squeeze(1) tensor([1, 2, 2, 3])
label:one-hot 與 標(biāo)量轉(zhuǎn)化
標(biāo)量 轉(zhuǎn)化為 one-hot 向量
from keras.utils import to_categorical data = [1, 3, 2, 0, 3, 2, 2, 1, 0, 1] encoded = to_categorical(data) print("encoded:", encoded)
輸出:
encoded: [[0. 1. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 1. 0.]
[1. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]
[1. 0. 0. 0.]
[0. 1. 0. 0.]]
one-hot向量 轉(zhuǎn)化為 標(biāo)量
因?yàn)橐粋€(gè)熱向量是一個(gè)包含0和1的向量,所以可以這樣做:
encoded = np.array([[0, 1, 0, 0], ? ? ? ? ? ? ? ? ? ? [0, 0, 0, 1], ? ? ? ? ? ? ? ? ? ? [0, 0, 1, 0], ? ? ? ? ? ? ? ? ? ? [1, 0, 0, 0], ? ? ? ? ? ? ? ? ? ? [0, 0, 0, 1], ? ? ? ? ? ? ? ? ? ? [0, 0, 1, 0], ? ? ? ? ? ? ? ? ? ? [0, 0, 1, 0], ? ? ? ? ? ? ? ? ? ? [0, 1, 0, 0], ? ? ? ? ? ? ? ? ? ? [1, 0, 0, 0], ? ? ? ? ? ? ? ? ? ? [0, 1, 0, 0]]) data = [np.where(r == 1)[0][0] for r in encoded] print("data:", data)
輸出:
data: [1, 3, 2, 0, 3, 2, 2, 1, 0, 1]
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)批量合并Excel文件的第二張合并Excel
在數(shù)據(jù)處理和分析中,經(jīng)常需要對(duì)多個(gè)Excel文件進(jìn)行批量操作,特別是當(dāng)這些文件具有相似的結(jié)構(gòu)時(shí),下面我們就來看看Python如何實(shí)現(xiàn)批量合并文件夾下所有Excel文件的第二張表吧2024-03-03python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例
今天小編就為大家分享一篇python繪制已知點(diǎn)的坐標(biāo)的直線實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Python如何實(shí)現(xiàn)轉(zhuǎn)換URL詳解
這篇文章主要介紹了Python如何實(shí)現(xiàn)轉(zhuǎn)換URL詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07基于Python實(shí)現(xiàn)下載網(wǎng)易音樂代碼實(shí)例
這篇文章主要介紹了基于Python實(shí)現(xiàn)下載網(wǎng)易音樂代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08使用Pandas?實(shí)現(xiàn)MySQL日期函數(shù)的解決方法
這篇文章主要介紹了用Pandas?實(shí)現(xiàn)MySQL日期函數(shù)的效果,Python是很靈活的語言,達(dá)成同一個(gè)目標(biāo)或有多種途徑,我提供的只是其中一種解決方法,需要的朋友可以參考下2023-02-02使用python爬取B站千萬級(jí)數(shù)據(jù)
B站我想大家都熟悉吧,其實(shí) B 站的爬蟲網(wǎng)上一搜一大堆。不過紙上得來終覺淺,絕知此事要躬行,我碼故我在。2018-06-06