pytorch炼金术-One-Hot 编码
One-Hot 编码
1. F.one_hot
pytorch 现在自带的将标签转成one-hot编码方法
import torch.nn.functional as F
import torchx=torch.randint(low=0,high=3,size=(2,2))# 随机生成一张2*2的灰度图.一共3个类别数。所以0,1,2
print(x)
y=F.one_hot(x)# 如果不加类别数,会默认使用 输入数据中最大值,作为列别数。一般还是会加的
print(y.shape)
print(y)
# pytorch做模型训练时 中需要进行转置。有点麻烦
y=torch.from_numpy(y.numpy().transpose(2,0,1))
print(y)
结果如下
tensor([[2, 0],[1, 0]])
torch.Size([2, 2, 3])
tensor([[[0, 0, 1],[1, 0, 0]],[[0, 1, 0],[1, 0, 0]]])
tensor([[[0, 1],[0, 1]],[[0, 0],[1, 0]],[[1, 0],[0, 0]]])
也可以使用
y=F.one_hot(x,num_classes=3)
效果一样
加载图片
import torch.nn.functional as F
import torch
import numpy as np
from PIL import Image# 加载8位图。
x=Image.open(r"../input/lidcidri/LIDC/mask_roi/LIDC_Mask_0000.png").convert("P")
# x的数据是0和225.所以得需要把225 变成1 ,才能做ont-hot
x=np.array(x)
x[x==225]=1# 如果图片已经处理好了,就不需要转标签了,比如VOC数据集。或者自己制作了labelimg的生成的多少8位图
x=torch.from_numpy(x).long()
y=F.one_hot(x,num_classes=2)# 如果不加类别数,会默认使用 输入数据中最大值,作为列别数。一般还是会加的
print(y.shape)
# print(y)
# pytorch做模型训练时 中需要进行转置。有点麻烦
y=torch.from_numpy(y.numpy().transpose(2,0,1))
print(y.shape)
结果
torch.Size([64, 64, 2])
torch.Size([2, 64, 64])
2. torch.scatter_
源代码
import torch
def to_one_hot(mask, n_class):"""Transform a mask to one hotchange a mask to n * h* w n is the classArgs:mask:n_class: number of class for segmentationReturns:y_one_hot: one hot mask"""y_one_hot = torch.zeros((n_class, mask.shape[1], mask.shape[2]))y_one_hot = y_one_hot.scatter(0, mask, 1).long()return y_one_hot# 这里一般使用 8位图加载图片信息。然后进行升维 。输入的时候是[1,高,宽]
# 返回结果就是 [num_class,H,W] [类别数,高,宽]
x=torch.randint(low=0,high=3,size=(1,2,2))
print(x)
print(x.shape)
y=to_one_hot(x,n_class=3)
print(y)
print(y.shape)
结果
tensor([[[0, 2],[1, 0]]])
torch.Size([1, 2, 2])
tensor([[[1, 0],[0, 1]],[[0, 0],[1, 0]],[[0, 1],[0, 0]]])
torch.Size([3, 2, 2])
加载图片实例
import torch
import numpy as np
from PIL import Image
def to_one_hot(mask, n_class):"""Transform a mask to one hotchange a mask to n * h* w n is the classArgs:mask:n_class: number of class for segmentationReturns:y_one_hot: one hot mask"""y_one_hot = torch.zeros((n_class, mask.shape[1], mask.shape[2]))y_one_hot = y_one_hot.scatter(0, mask, 1).long()return y_one_hot# 这里一般使用 8位图加载图片信息。然后进行升维 。输入的时候是[1,高,宽]
# 返回结果就是 [num_class,H,W] [类别数,高,宽]
x=Image.open(r"../input/lidcidri/LIDC/mask_roi/LIDC_Mask_0000.png").convert("P")
# x的数据是0和225.所以得需要把225 变成1 ,才能做ont-hot
x=np.array(x)
x[x==225]=1
x=torch.from_numpy(x).unsqueeze(0).long() # 把x从numpy--->tensor
# x=torch.randint(low=0,high=3,size=(1,2,2))
print(x)
print(x.shape)
y=to_one_hot(x,n_class=2)
print(y)
print(y.shape)
pytorch炼金术-One-Hot 编码相关推荐
- Pytorch框架之one_hot编码函数
one_hot方法 one_hot编码定义 Pytorch中one_hot转换 QQ:3020889729 小蔡 one_hot编码定义 在一个给定的向量中,按照设定的最值–可以是向量中包含的最大值( ...
- PyTorch基础——one hot编码转换
主要使用函数:torch.Tensor.scatter_(.....) [sample] 将[1, 5, 4, 2]四个样本转换为one hot编码,形式如下: [[0, 1, 0, 0, 0, 0] ...
- pytorch炼金术-DataSet-PASCAL VOC 简介
PASCAL VOC 数据集简介 数据集在语义分割上SOTA模型 1. 简介 1.1 简介 该挑战赛的竞赛项目主要包括 图像分类与检测(Classification/Detection Competi ...
- ELMo解读(论文 + PyTorch源码)
ELMo的概念也是很早就出了,应该是18年初的事情了.但我仍然是后知后觉,居然还是等BERT出来很久之后,才知道有这么个东西.这两天才仔细看了下论文和源码,在这里做一些记录,如果有不详实的地方,欢迎指 ...
- 深入Bert实战(Pytorch)----fine-Tuning 2
深入Bert实战(Pytorch)----fine-Tuning 2 https://www.bilibili.com/video/BV1K5411t7MD?p=5 https://www.youtu ...
- [NLP] 相对位置编码(二) Relative Positional Encodings - Transformer-XL
1. Motivation 在Transformer-XL中,由于设计了segments,如果仍采用transformer模型中的绝对位置编码的话,将不能区分处不同segments内同样相对位置的词的 ...
- PyTorch 深度学习实用指南:1~5
原文:PyTorch Deep Learning Hands-On 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE)流程来尽可 ...
- GitHub 上 15 个优秀开源项目告诉你如何上手数据科学!
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作为一名狂热的数据科学爱好者,本文作者整理了 2017 年 Github 上尤为实用的数据科 ...
- nlp-with-transformers系列-02-从头构建文本分类器
大家好,我是致Great,微信TO-Great,欢迎大家公众号ChallengeHub的NLP技术交流群. 文本分类 文本分类是 NLP 中最常见的任务之一, 它可用于广泛的应用或者开发成程序,例如将 ...
最新文章
- RT-Thread优化智能车设计
- 计算机设计策略,专家经验谈:Excel工作表的设计策略
- Hadoop中Block和Split区别
- yunyang tensorflow-yolov3 Intel Realsense D435 (并发)调用两个摄像头运行识别程序并画框
- .NET反射、委托技术与设计模式
- python 保存文件 吃内存_孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化...
- 电脑开机3秒就重启循环_小米9不开机、循环重启,插充电器屏幕没反应怎么回事?听说是通病,可以维修吗?...
- django连接mysql_Django 连接数据库
- Mac neo4j忘记密码,不删除数据处理方法
- 解决windows 2003打了系统补丁后远程桌面不能用
- Mac上最好的白噪音软件:Noizio for Mac
- 分享几个免费的开源邮件服务器软件
- Win10PE网络版.iso UEFI、BIOS双启动
- CSS实现文字环绕图片效果
- mysql函数 动态语句_自定义函数动态执行SQL语句
- 韩咏梅:幸福只需要七分饱(转自新加坡联合早报)
- 【SVAC1】SVAC1与H.264支持特性比较
- 贝多芬第九交响第五乐章合唱歌词
- C指针与指针之间的相减操作
- 【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)