python label与one-hot之间的互相转换方式
作者:强殖装甲凯普 发布时间:2022-01-05 07:09:55
标签:python,label,one-hot
label与one-hot之间的互相转换
有时候需要label,比如强化学习的离散动作空间,输出动作索引;有时候需要one-hot,比如训练数据或者输入上一个状态的动作,简单的互相转换还是重要的。
label 转 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 转label
numpy可以通过 np.argmax(onehot, 1) 实现,pytorch 可以通过 torch.topk(one_hot, 1)[1].squeeze(1) 实现:
>>> 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 与 标量转化
标量 转化为 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向量 转化为 标量
因为一个热向量是一个包含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]
来源:https://blog.csdn.net/qq_38163755/article/details/125428293
0
投稿
猜你喜欢
- 最近看到N多介绍CSS框架,前些天我说过一句话:“在我有限的视野里,还没见到可以真正可以称得上css框架的东东~”,当然也可能是我的视野太小
- 使用opencv将图片转为灰度图主要有两种方法,第一种是将彩 * 转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图。将彩色
- 如下所示:a = 1b = 3print(a/b)#方法一:print(round(a/b,2))#方法二:print(format(flo
- python的uuid都是32位的,比较长,处理起来效率比较低,本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六
- 领会下面这个示例吧,其实跟java中wait/nofity是一样一样的道理import threading# 条件变量,用于复杂的线程间同步
- <HTML> <BODY> <
- 1、读文件import csvcsv_reader = csv.reader(open("data.file", enc
- 最近在研究深度学习视觉相关的东西,经常需要写python代码搭建深度学习模型。比如写CNN模型相关代码时,我们需要借助python图像库来读
- 需求背景女朋友的论文需要爬取YouTube视频热评,但爬下来的都是外文。主要设计 读取一个表格文件,获取需要翻译的文本
- 最近碰到一个mysql5数据库的问题。就是一个标准的servlet/tomcat网络应用,后台使用mysql数据库。问题是待机一晚上后,第二
- 为你的网站,博客等添加rss聚合功能,给出rss.asp和rss.xml两种的聚合代码看过的朋友可帮忙顶哦,这些代码都是第一次发的,外面很多
- 用途:图形化界面操作:通过设计一个图形化的界面,用户可以通过按钮或其他操作方式调用后台的Python程序进行数据处理、图像处理等功能。自动化
- 适配器模式Adapter Pattern是什么适配器模式是一种结构型模式,它可以将一个类的接口转换成客户端所期望的接口,从而使原本不兼容的类
- apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同。nginx是通过第三方的fastcgi处理
- 列表生成式语法:[x*x for x in range(0,10)] //列表生成式,这里是中括号//结果 [0, 1, 4, 9, 16,
- 与事件循环进行交互,最基本的方式就是任务,任务封装了协程和自动跟踪它的状态。任务是Future类的子类,所以其它协程可以等待任务完成,或当这
- 1、打开文件open()函数简介 :打开文件使用open函数,可以打开一个已经存在的文件,如果没有这个文件的话,会创建一个新文件完整的语法格
- 本文讨论 MySQL 的备份和恢复机制,以及如何维护数据表,包括最主要的两种表类型:MyISAM 和 Innodb,文中设计的 MySQL
- 单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的信息打印出来#c
- 在已知DICOM和三维模型对应掩膜的情况下,计算三维模型的体积。思路:1、计算每个体素的体积。每个体素为长方体,x,y为PixelSpaci