位置: IT常识 - 正文

【Pytorch基础知识】数据的归一化和反归一化(pytorch基本操作)

编辑:rootadmin
【Pytorch基础知识】数据的归一化和反归一化

推荐整理分享【Pytorch基础知识】数据的归一化和反归一化(pytorch基本操作),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:学pytorch的基础,pytorch基本操作,pytorch入门到进阶,pytorch入门,pytorch基础教程,pytorch零基础,pytorch基础教程,pytorch详解,内容如对您有帮助,希望把文章链接给更多的朋友!

一张正常的图,或者说是人眼习惯的图是这样的:

但是,为了神经网络更快收敛,我们在深度学习网络过程中通常需要将读取的图片转为tensor并归一化(此处的归一化指transforms.Normalize()操作)输入到网络中进行系列操作。

如果将转成的tensor再直接转为图片,就会变成下图,和我们眼睛看到是不一样感觉。

这是因为,将图片转为tensor并归一化,tensor之中会有负值,和我们正常看到的是不一样的,如果不进行反归一化到 [0,1],就会变成下图,会觉得变扭。

我们正常看到的图片tensor是[0,255]或者[0,1]

解释:transforms.Normalize()归一化后的图像,满足均值为0方差为1,被限定在一定的数值内,一般的数值为[-1,1]。

这个过程中,我们需要进行如下操作,才能把图片转为tensor操作再转为图片(人眼习惯的)。这里的tensor操作是transforms系列操作。

【Pytorch基础知识】数据的归一化和反归一化(pytorch基本操作)

归一化的目的:使得预处理的数据被限定在一定的范围内,从而消除奇异样本数据导致的不良影响。数据归一化处理后,可以加快梯度下降求最优解的速度,且有可能提高精度(如KNN)。

反归一化的目的:为了还原原来人眼可以识别的图。

归一化

一幅图片的格式为【批数据的数量× 通道数× 高× 宽】:

接下来开始计算mean 和 std: 

nb_samples = 0#创建3维的空列表channel_mean = torch.zeros(3)channel_std = torch.zeros(3)print(image.shape)N, C, H, W = image.shape[:4]image = image.view(N, C, -1) #将w,h维度的数据展平,为batch,channel,data,然后对三个维度上的数分别求和和标准差print(image.shape)#展平后,w,h属于第二维度,对他们求平均,sum(0)为将同一纬度的数据累加channel_mean += image.mean(2).sum(0) #展平后,w,h属于第二维度,对他们求标准差,sum(0)为将同一纬度的数据累加channel_std += image.std(2).sum(0)#获取所有batch的数据,这里为1nb_samples += N#获取同一batch的均值和标准差channel_mean /= nb_sampleschannel_std /= nb_samplesprint(channel_mean, channel_std)

然后利用transforms.Normalize 进行转换:

normalizer = transforms.Normalize(mean=channel_mean, std=channel_std)# 归一化后得到可处理的值data = normalizer(image)反归一化

根据归一化计算得到的mean和std,我们可以反推出反归一化的 mean 和 std,从而利用 transforms.Normalize 进行转换,计算方法如下:

MEAN是指归一化时计算出来的均值,de_MEAN是计算出来反归一化的均值,后面需要用。

综合上面的讲解及代码,整合最后的代码为下:

# 定义一个image图像,torch.Size([1, 3, 319, 256])image = torch.rand([1,3,319,256])# 计算原图的 mean 和stdnb_samples = 0#创建3维的空列表channel_mean = torch.zeros(3)channel_std = torch.zeros(3)print(image.shape)N, C, H, W = image.shape[:4]#将w,h维度的数据展平,为batch,channel,data,然后对三个维度上的数分别求和和标准差image = image.view(N, C, -1) print(image.shape)#展平后,w,h属于第二维度,对他们求平均,sum(0)为将同一纬度的数据累加channel_mean += image.mean(2).sum(0) #展平后,w,h属于第二维度,对他们求标准差,sum(0)为将同一纬度的数据累加channel_std += image.std(2).sum(0)#获取所有batch的数据,这里为1nb_samples += N#获取同一batch的均值和标准差channel_mean /= nb_sampleschannel_std /= nb_samplesprint(channel_mean, channel_std)# 这是归一化的 mean 和std channel_mean = torch.tensor([-0.5321, -0.8102, -0.5532])channel_std = torch.tensor([1.2582, 1.0009, 0.9211])# 这是反归一化的 mean 和std MEAN = [-mean/std for mean, std in zip(channel_mean, channel_std)]STD = [1/std for std in channel_std]# 归一化和反归一化生成器normalizer = transforms.Normalize(mean=channel_mean, std=channel_std)denormalizer = transforms.Normalize(mean=MEAN, std=STD)# 归一化得到可处理的值data = normalizer(image)# 反归一化得到原图image2 = denormalizer(data)

image ≈ image2

因为浮点数计算有误差,所以不会完全一样,但是问题不大~

 这样就可以得到tensor转换后的原图了。

好了,大功告成,完结撒花!

欢迎关注、点赞、收藏、评论、分享给好友,一起学习有趣的新知识!!! 

本文链接地址:https://www.jiuchutong.com/zhishi/297335.html 转载请保留说明!

上一篇:原生js获取元素的各种位置(大全)(原生js获取元素高度)

下一篇:vue中Number方法将字符串转换为数字(vue的number)

  • b站怎么删除自己的评论(b站怎么删除自己的作品)

    b站怎么删除自己的评论(b站怎么删除自己的作品)

  • 华为平板怎样录屏(华为平板怎样录屏幕视频)

    华为平板怎样录屏(华为平板怎样录屏幕视频)

  • 为什么苹果订阅打开是空白(为什么苹果订阅显示无法连接)

    为什么苹果订阅打开是空白(为什么苹果订阅显示无法连接)

  • 华为海外版国内能用吗(华为海外版国内售后)

    华为海外版国内能用吗(华为海外版国内售后)

  • ctrl加什么是息屏

    ctrl加什么是息屏

  • 华为kirin710f处理器相当于骁龙几(华为KIRIN710F处理器怎么样)

    华为kirin710f处理器相当于骁龙几(华为KIRIN710F处理器怎么样)

  • win 7 蓝屏0x00000024(win7蓝屏0x0000002c)

    win 7 蓝屏0x00000024(win7蓝屏0x0000002c)

  • 闲鱼曝光率最高多少(闲鱼曝光率高的商品)

    闲鱼曝光率最高多少(闲鱼曝光率高的商品)

  • xr微信怎么调深色模式(iphonexr微信深色模式如何设置)

    xr微信怎么调深色模式(iphonexr微信深色模式如何设置)

  • 苹果手机怎么读取门禁卡(苹果手机怎么读英语单词)

    苹果手机怎么读取门禁卡(苹果手机怎么读英语单词)

  • 为什么beats耳机蓝牙搜不到(为什么beats耳机电脑蓝牙搜不到)

    为什么beats耳机蓝牙搜不到(为什么beats耳机电脑蓝牙搜不到)

  • 华为mate30用久了会卡吗(华为mate30用久了后盖会不会有缝隙)

    华为mate30用久了会卡吗(华为mate30用久了后盖会不会有缝隙)

  • 被好友删除了怎么加回(被好友删除了怎么删除验证消息)

    被好友删除了怎么加回(被好友删除了怎么删除验证消息)

  • b站发布视频要审核多久(b站发布视频要钱吗)

    b站发布视频要审核多久(b站发布视频要钱吗)

  • 唯品会自动抢货是什么意思(唯品会自动抢货和缺货的区别)

    唯品会自动抢货是什么意思(唯品会自动抢货和缺货的区别)

  • 魅族录屏功能在哪里(魅族录屏在哪个文件夹)

    魅族录屏功能在哪里(魅族录屏在哪个文件夹)

  • nova6可以无线反向充电吗(华为nova 6支持无线反向充电吗)

    nova6可以无线反向充电吗(华为nova 6支持无线反向充电吗)

  • 微信支持安卓最低版本是多少(微信支持安卓最低版本是多少?2022)

    微信支持安卓最低版本是多少(微信支持安卓最低版本是多少?2022)

  • 苹果手机播客可以关闭吗(苹果手机播客可以定时关闭吗)

    苹果手机播客可以关闭吗(苹果手机播客可以定时关闭吗)

  • 华为mate20扬声器在哪(华为mate20扬声器除尘)

    华为mate20扬声器在哪(华为mate20扬声器除尘)

  • xsmax支持反向充电吗(xsmax有没有反向充电)

    xsmax支持反向充电吗(xsmax有没有反向充电)

  • 华为mate30pro支不支持5g(华为mate30pro支不支持内存卡)

    华为mate30pro支不支持5g(华为mate30pro支不支持内存卡)

  • 港版三星和国行的区别(港版三星和国行的区别在哪里)

    港版三星和国行的区别(港版三星和国行的区别在哪里)

  • 华为freebud和荣耀flypods耳机对比(freebuds3和荣耀手机匹配吗)

    华为freebud和荣耀flypods耳机对比(freebuds3和荣耀手机匹配吗)

  • 电池医生准吗(电池医生检测)

    电池医生准吗(电池医生检测)

  • 拼多多砍价浏览商品能得几刀小刀(拼多多砍价历史在哪找到)

    拼多多砍价浏览商品能得几刀小刀(拼多多砍价历史在哪找到)

  • mate20怎么升级9.1(mate20怎么升级emui10)

    mate20怎么升级9.1(mate20怎么升级emui10)

  • Vue路由守卫(通俗易懂)(vue路由守卫用法)

    Vue路由守卫(通俗易懂)(vue路由守卫用法)

  • python迭代器的取值方法(python迭代器有什么用)

    python迭代器的取值方法(python迭代器有什么用)

  • 跨省异地购买房产对外销售
  • 税收优惠属于政策吗
  • 个人能否申请延迟退休
  • 企业所得税申报时间
  • 存货报废进项是否要转出
  • 已经缴税的发票还能作废吗
  • 资产季末值
  • 小规模纳税人能抵扣进项发票吗
  • 补缴所得税的账务处理
  • 工程项目成本控制的方法
  • 供应销用商品给的返利怎么做?
  • 装订凭证要如何写
  • 所得税汇算清缴分录怎么做
  • 纳税人涉税信息查询
  • 2021年营业额多少需要交税
  • 农产品收购发票怎么做账
  • 运费专票当月如何入账
  • 研发费用加计扣除最新政策2023
  • 购进商品没收到货怎么办
  • 已认证的发票退货怎么处理
  • PHP:mb_ereg_search_pos()的用法_mbstring函数
  • 设计版权费用
  • linux块设备驱动详解
  • 年终奖发放问题
  • 最小的手机有多大
  • 如何通过无线路由器连接打印机
  • 购买股票会计分录怎么写
  • 公允价值变动损益借贷方向增减
  • 印花税的优惠政策和依据
  • 俄勒冈zip
  • ci框架中新建的控制器取不到session
  • thinkphpcount查询
  • php判断数组是否为空的函数
  • 国内外人工智能发展现状,及最新的人工智能应用?
  • 人工智能lisp
  • php、java、android、ios通用的3des方法(推荐)
  • 带息应收票据账务处理分录
  • python怎么设置字符串宽度
  • 预收款怎么做表格
  • 建筑行业预交增值税怎么结转
  • 股东借款属于什么科目
  • 企业在外地单位怎么交税
  • 现金支付的现状
  • 外资企业可以融资吗
  • 一般纳税人劳务税率是多少?
  • 企业第四季度是什么时候
  • 自建厂房会计处理
  • 接受捐赠的增值税怎么处理
  • 存货非正常损失进项税额转出分录
  • 应收账款周转率越高越好吗
  • 微信提现手续费1000扣多少
  • 预付账款属于哪一类账户
  • 营业收入要包括什么
  • 专利年费可以减免吗
  • 物流托运不给发货
  • 会计账簿按用途分类可以分为
  • sqlserver2008r2创建实例
  • win8下载软件
  • linux文件系统损坏
  • 苹果电脑邮箱添加163邮箱
  • linux忘了root密码
  • linux vi命令详解菜鸟教学
  • mac真好用
  • 查看win8.1版本
  • linux文件latin1转换为utf
  • win 8怎么样
  • red hat linux安装
  • 内存一次性读多少字节
  • unity控制相机
  • jquery操作元素内容的方法
  • python井字游戏
  • unity屏幕坐标 ui坐标
  • python批量填表
  • jquery根据name
  • python继承的主要目的
  • 外贸出口退税增值税结转每月
  • 小店区国税地税局地址
  • 2019小规模纳税人标准
  • 税控软件怎么升级到新版本
  • 什么叫企业改制重组
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设