前言

在使用深度学习框架构建训练数据时,通常需要数据归一化(Normalize),以利于网络的训练。而在训练过程可视化中,通常需要反归一化。以PyTorch框架而言,提供了torchvision.transforms.Normalize(mean, std, inplace=False)方法用于归一化。

归一化

归一化的实质是将数据的分布根据均值和标准差进行调整。

#torchvision.transforms.Normalize(mean, std, inplace=False)
output[channel] = (input[channel] - mean[channel]) / std[channel]

在实际应用过程中通常有三种方式:

(1)普通归一化

将经过ToTensor()方法(能够把范围从[0,255]变换到[0,1]之间)后的数据缩放到[-1, 1]之间。

transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))

(2)ImageNet先验归一化

transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225))

该均值和标准差来源于ImageNet数据集统计得到,如果建立的数据集分布和ImageNet数据集数据分布类似(来自生活真实场景,例如人像、风景、交通工具等),或者使用PyTorch提供的预训练模型,推荐使用该参数归一化。如果建立的数据集并非是生活真实场景(如生物医学图像),则不推荐使用该参数。

(3)计算数据集的均值和标准差

对于特定的数据集,可以直接通过对训练集进行统计计算其均值和标准差。

反归一化

针对普通归一化方法的反归一化:

def denorm(x):out = (x + 1) / 2return out.clamp_(0, 1)

针对ImageNet先验归一化方法的反归一化:

class UnNormalize(object):def __init__(self, mean, std):self.mean = meanself.std = stddef __call__(self, tensor):"""Args:tensor (Tensor): Tensor image of size (C, H, W) to be normalized.Returns:Tensor: Normalized image."""for t, m, s in zip(tensor, self.mean, self.std):t.mul_(s).add_(m)# The normalize code -> t.sub_(m).div_(s)return tensorunorm = UnNormalize(mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))
unorm(tensor)

参考资料

[1] image processing[数据归一化]均值和方差设置
[2] torchvision.transforms.Normalize(mean, std, inplace=False)
[3] How to get these data(means = [0.485, 0.456, 0.406] stds = [0.229, 0.224, 0.225]) in your code? #6
[4] Why Pytorch officially use mean=[0.485, 0.456, 0.406] and std=[0.229, 0.224, 0.225] to normalize images?
[5] Simple way to inverse transform ? Normalization
[6] PyTorch函数之torchvision.transforms.ToTensor()和Normalize()
[7] pytorch 归一化与反归一化

数据预处理中的归一化与反归一化相关推荐

  1. MinMaxScaler 中scaler.inverse_transform不能反归一化正确的数据

    起因 参考代码[时间序列预测]基于BP.RNN.LSTM.CNN-LSTM算法多特征(多影响因素)用电负荷预测[保姆级手把手教学] 他的源代码部分: 我的代码仿写部分: # 将真实值标签进行反归一化操 ...

  2. 数据处理中的归一化与反归一化

    一.定义 数据归一化(标准化)是数据预处理的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,为避免影响数据分析结果.消除指标之间的量纲影响,须对数据进行标准化处理. 数据的归一化(normal ...

  3. LSTM中的归一化与反归一化问题、预测未来值问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.LSTM为什么要进行归一化,以及如何反归一化? 二.单特征时序预测中的反归一化 1.单特征时序数据预测导入相关包 ...

  4. Python - 归一化与反归一化

    归一化:用于减少不同字段数量级差异造成的影响,或用来平滑数值,可用在x,y 反归一化:一般用来模型预测后的pred y,反归一化回原来的数量级 纯公式推导版本: 归一化 data = [1,2,3,4 ...

  5. python反归一化_pytorch 归一化与反归一化实例

    ToTensor中就有转到0-1之间了. # -*- coding:utf-8 -*- import time import torch from torchvision import transfo ...

  6. keras归一化与反归一化

    from sklearn.preprocessing import MinMaxScaler,其中MinMaxScaler是一个类,作用是用作数据归一化.MinMaxScaler()会生成一个归一化实 ...

  7. ML之FE:特征工程/数据预处理中的数据异常值的概述、检测方法、处理方法技巧总结之详细攻略

    ML之FE:特征工程/数据预处理中的数据异常值的概述.检测方法.处理方法技巧总结之详细攻略 目录 异常值 异常值的概述(简介/原因/影响) 异常值的检测方法

  8. 【机器学习基础】Python数据预处理:彻底理解标准化和归一化

    数据预处理 数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析. 常用的方法有两 ...

  9. PyTorch 数据归一化与反归一化

    文章目录 数据归一化 除最大值法 MinMaxScaler 均值和标准差 反归一化 数据归一化 除最大值法 def read_and_normalize_train_data():train_data ...

最新文章

  1. Linux shell 学习笔记(16)— shell 入门总结
  2. puppet cert maintain
  3. 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)
  4. 安卓高手之路之 ClassLoader
  5. stm32f407 usb cdc设备无法启动问题
  6. iOS APP之本地数据存储(译)
  7. job history 的查看
  8. Swift中为什么输入“..”报错
  9. Java singleton初始化顺序研究
  10. 具有Spring的简单工作流引擎
  11. TCP三次握手(待细研究)
  12. python快速排序最简单写法_面试官:来,这位精神小伙,简简单单写个快速排序吧...
  13. Mathematica颜色系,你喜欢哪一个?
  14. 微信养号防封攻略_防封群微信怎么卖
  15. acdsee怎么改图片大小|acdsee怎么用
  16. python 拆分excel单元格内容_Excel拆分单元格与把一个单元格内容拆分到多个单元格...
  17. 算法学习01- 生兔子的问题
  18. 微软账号登陆不上_登录微软账号的Windows电脑如何远程?
  19. 以上是周末少先队活动照片,涉及到7个小队的同学参与拍照
  20. 基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统

热门文章

  1. 本地安全策略命令行secedit设置本地账户安全策略
  2. ActionScript 大型网页游戏开发
  3. GraphicConverter Mac图片浏览和编辑器
  4. matlab中巴特沃斯滤波器的使用
  5. CSS3新增了哪些新特性
  6. linux-FHS总结
  7. 笔记本电脑不显示计算机,笔记本电脑屏幕不显示怎么回事
  8. 云服务器如何修改操作系统,云服务器如何修改操作系统
  9. 【MM32F5270开发板试用】播放TF卡WAV格式音乐,I2S驱动CS4344
  10. security基于数据库的认证