数据预处理中的归一化与反归一化
前言
在使用深度学习框架构建训练数据时,通常需要数据归一化(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 归一化与反归一化
数据预处理中的归一化与反归一化相关推荐
- MinMaxScaler 中scaler.inverse_transform不能反归一化正确的数据
起因 参考代码[时间序列预测]基于BP.RNN.LSTM.CNN-LSTM算法多特征(多影响因素)用电负荷预测[保姆级手把手教学] 他的源代码部分: 我的代码仿写部分: # 将真实值标签进行反归一化操 ...
- 数据处理中的归一化与反归一化
一.定义 数据归一化(标准化)是数据预处理的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,为避免影响数据分析结果.消除指标之间的量纲影响,须对数据进行标准化处理. 数据的归一化(normal ...
- LSTM中的归一化与反归一化问题、预测未来值问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.LSTM为什么要进行归一化,以及如何反归一化? 二.单特征时序预测中的反归一化 1.单特征时序数据预测导入相关包 ...
- Python - 归一化与反归一化
归一化:用于减少不同字段数量级差异造成的影响,或用来平滑数值,可用在x,y 反归一化:一般用来模型预测后的pred y,反归一化回原来的数量级 纯公式推导版本: 归一化 data = [1,2,3,4 ...
- python反归一化_pytorch 归一化与反归一化实例
ToTensor中就有转到0-1之间了. # -*- coding:utf-8 -*- import time import torch from torchvision import transfo ...
- keras归一化与反归一化
from sklearn.preprocessing import MinMaxScaler,其中MinMaxScaler是一个类,作用是用作数据归一化.MinMaxScaler()会生成一个归一化实 ...
- ML之FE:特征工程/数据预处理中的数据异常值的概述、检测方法、处理方法技巧总结之详细攻略
ML之FE:特征工程/数据预处理中的数据异常值的概述.检测方法.处理方法技巧总结之详细攻略 目录 异常值 异常值的概述(简介/原因/影响) 异常值的检测方法
- 【机器学习基础】Python数据预处理:彻底理解标准化和归一化
数据预处理 数据中不同特征的量纲可能不一致,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果,因此,需要对数据按照一定比例进行缩放,使之落在一个特定的区域,便于进行综合分析. 常用的方法有两 ...
- PyTorch 数据归一化与反归一化
文章目录 数据归一化 除最大值法 MinMaxScaler 均值和标准差 反归一化 数据归一化 除最大值法 def read_and_normalize_train_data():train_data ...
最新文章
- Linux shell 学习笔记(16)— shell 入门总结
- puppet cert maintain
- 如何使用 OpenStack CLI - 每天5分钟玩转 OpenStack(22)
- 安卓高手之路之 ClassLoader
- stm32f407 usb cdc设备无法启动问题
- iOS APP之本地数据存储(译)
- job history 的查看
- Swift中为什么输入“..”报错
- Java singleton初始化顺序研究
- 具有Spring的简单工作流引擎
- TCP三次握手(待细研究)
- python快速排序最简单写法_面试官:来,这位精神小伙,简简单单写个快速排序吧...
- Mathematica颜色系,你喜欢哪一个?
- 微信养号防封攻略_防封群微信怎么卖
- acdsee怎么改图片大小|acdsee怎么用
- python 拆分excel单元格内容_Excel拆分单元格与把一个单元格内容拆分到多个单元格...
- 算法学习01- 生兔子的问题
- 微软账号登陆不上_登录微软账号的Windows电脑如何远程?
- 以上是周末少先队活动照片,涉及到7个小队的同学参与拍照
- 基于Spark的新闻推荐系统,包含爬虫项目、web网站以及spark推荐系统