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 编码相关推荐

  1. Pytorch框架之one_hot编码函数

    one_hot方法 one_hot编码定义 Pytorch中one_hot转换 QQ:3020889729 小蔡 one_hot编码定义 在一个给定的向量中,按照设定的最值–可以是向量中包含的最大值( ...

  2. PyTorch基础——one hot编码转换

    主要使用函数:torch.Tensor.scatter_(.....) [sample] 将[1, 5, 4, 2]四个样本转换为one hot编码,形式如下: [[0, 1, 0, 0, 0, 0] ...

  3. pytorch炼金术-DataSet-PASCAL VOC 简介

    PASCAL VOC 数据集简介 数据集在语义分割上SOTA模型 1. 简介 1.1 简介 该挑战赛的竞赛项目主要包括 图像分类与检测(Classification/Detection Competi ...

  4. ELMo解读(论文 + PyTorch源码)

    ELMo的概念也是很早就出了,应该是18年初的事情了.但我仍然是后知后觉,居然还是等BERT出来很久之后,才知道有这么个东西.这两天才仔细看了下论文和源码,在这里做一些记录,如果有不详实的地方,欢迎指 ...

  5. 深入Bert实战(Pytorch)----fine-Tuning 2

    深入Bert实战(Pytorch)----fine-Tuning 2 https://www.bilibili.com/video/BV1K5411t7MD?p=5 https://www.youtu ...

  6. [NLP] 相对位置编码(二) Relative Positional Encodings - Transformer-XL

    1. Motivation 在Transformer-XL中,由于设计了segments,如果仍采用transformer模型中的绝对位置编码的话,将不能区分处不同segments内同样相对位置的词的 ...

  7. PyTorch 深度学习实用指南:1~5

    原文:PyTorch Deep Learning Hands-On 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自[ApacheCN 深度学习 译文集],采用译后编辑(MTPE)流程来尽可 ...

  8. GitHub 上 15 个优秀开源项目告诉你如何上手数据科学!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 作为一名狂热的数据科学爱好者,本文作者整理了 2017 年 Github 上尤为实用的数据科 ...

  9. nlp-with-transformers系列-02-从头构建文本分类器

    大家好,我是致Great,微信TO-Great,欢迎大家公众号ChallengeHub的NLP技术交流群. 文本分类 文本分类是 NLP 中最常见的任务之一, 它可用于广泛的应用或者开发成程序,例如将 ...

最新文章

  1. RT-Thread优化智能车设计
  2. 计算机设计策略,专家经验谈:Excel工作表的设计策略
  3. Hadoop中Block和Split区别
  4. yunyang tensorflow-yolov3 Intel Realsense D435 (并发)调用两个摄像头运行识别程序并画框
  5. .NET反射、委托技术与设计模式
  6. python 保存文件 吃内存_孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化...
  7. 电脑开机3秒就重启循环_小米9不开机、循环重启,插充电器屏幕没反应怎么回事?听说是通病,可以维修吗?...
  8. django连接mysql_Django 连接数据库
  9. Mac neo4j忘记密码,不删除数据处理方法
  10. 解决windows 2003打了系统补丁后远程桌面不能用
  11. Mac上最好的白噪音软件:Noizio for Mac
  12. 分享几个免费的开源邮件服务器软件
  13. Win10PE网络版.iso UEFI、BIOS双启动
  14. CSS实现文字环绕图片效果
  15. mysql函数 动态语句_自定义函数动态执行SQL语句
  16. 韩咏梅:幸福只需要七分饱(转自新加坡联合早报)
  17. 【SVAC1】SVAC1与H.264支持特性比较
  18. 贝多芬第九交响第五乐章合唱歌词
  19. C指针与指针之间的相减操作
  20. 【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)

热门文章

  1. 中国网安携卫士通公司亮相2015年度密码盛会 自主密码彰显国之重器
  2. Linux常用信息显示命令
  3. C++ QT 读写EXCEL表格基操
  4. 代替网易见外的智能语音识别转换字幕工具
  5. 面向对象和面向过程之间的区别以及优缺点
  6. 面向对象软件工程方法学与传统方法学的异同
  7. 疫情期间在家办公如何保障员工工作效率
  8. 考勤管理系统(java课设+源码)
  9. HTML标签——锚点链接小学习(懒癌患者的摸索之路)
  10. IIS 发布网站报错 解决问题记录下