PyTorch 数据归一化与反归一化[通俗易懂]

PyTorch 数据归一化与反归一化[通俗易懂]文章目录数据归一化除最大值法MinMaxScaler均值和标准差反归一化数据归一化除最大值法defread_and_normalize_train_data():train_data,train_label=load_train()print(‘Converttonumpy…’)train_data=np.array(train_data…

大家好,又见面了,我是你们的朋友全栈君。

数据归一化

除最大值法

def read_and_normalize_train_data():
    train_data, train_label = load_train()
 
    print('Convert to numpy...')
    train_data = np.array(train_data, dtype=np.uint8) # now np.amax(train_data)=255
    
    print('Convert to float...')
    train_data = train_data.astype('float32')
    train_data = train_data / 255
    train_target = np_utils.to_categorical(train_target, N_CLASSES)
 
    print('Train shape:', train_data.shape)
    print(train_data.shape[0], 'train samples')
    return train_data, train_label

MinMaxScaler

将特征缩放至特定区间 将特征缩放到给定的最小值和最大值之间,或者也可以将每个特征的最大绝对值转换至单位大小。这种方法是对原始数据的线性变换,将数据归一到[0,1]中间。转换函数为:

x = x − min ⁡ max ⁡ − min ⁡ x = \frac{x-\min}{\max-\min} x=maxminxmin

  这种方法有个缺陷就是当有新数据加入时,可能导致max和min的变化,需要重新定义。对于outlier非常敏感,因为outlier影响了max或min值,所以这种方法只适用于数据在一个范围内分布的情况。

 无法消除量纲对方差、协方差的影响。

def minmaxscaler(data):
    min = np.amin(data)
    max = np.amax(data)    
    return (data - min)/(max-min)

均值和标准差

在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,新的数据由于对方差进行了归一化,这时候每个维度的量纲其实已经等价了,每个维度都服从均值为0、方差1的正态分布,在计算距离的时候,每个维度都是去量纲化的,避免了不同量纲的选取对距离计算产生的巨大影响。

def feature_normalize(data):
    mu = np.mean(data,axis=0)
    std = np.std(data,axis=0)
    return (data - mu)/std

pytorch框架下的函数 :

import torch
import torchvision
import torchvision.transforms as transforms
 
 
transform = transforms.Compose(
    [transforms.ToTensor(),  # 函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
 
trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                        download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                          shuffle=True, num_workers=2)
 
 
# get some random training images
dataiter = iter(trainloader)
images, labels = dataiter.next()

上例均值和标准差都是0.5

注意:torchvision.transforms.ToTensor() 函数接受PIL Image或numpy.ndarray,将其先由HWC转置为CHW格式,再转为float后每个像素除以255.

反归一化

def unnormalized_show(img):
    img = img * std + mu     # unnormalize
    npimg = img.numpy()
    plt.figure()
    plt.imshow(np.transpose(npimg, (1, 2, 0)))
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152302.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js 数组插入删除[通俗易懂]

    js 数组插入删除[通俗易懂]常用的方法是遍历数组,然后使用splice()删除这里我们使用es6中findIndex()查找,然后删除functiondeleteFromArray(arr,compare){constindex=arr.findIndex(compare)if(index>-1){arr.splice(index,1)}}插入数据functioninsertArray(arr,val,compare,maxLen){//返回位置consti

    2022年9月30日
    0
  • 如何将图片批量重命名001开始编辑_怎么批量重命名图片为不同名称

    如何将图片批量重命名001开始编辑_怎么批量重命名图片为不同名称如何将图片批量重命名001开始?下面小编就来为大家做详细的介绍。俗话说的好,工欲善其事必先利其器,快来学习吧,可能明天你就会使用到这个方法。

    2022年9月5日
    3
  • Web.config中customErrors异常信息配置

    Web.config中customErrors异常信息配置开发工具:VisualStudio201715.7.5开发平台:Windows10新建WebApi项目,Web.config配置文件中,system.web下级节点中默认没有customErrors的配置,即customErrors默认是RemoteOnly<customErrorsmode="RemoteOnly"/><customErrorsdef…

    2022年7月16日
    14
  • jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等「建议收藏」

    jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等「建议收藏」jquery 使用dialog弹窗显示在整个屏幕上,而不是只遮盖当前的ifream或div,另附dialog中加返回按钮,设置高宽等

    2022年4月23日
    47
  • A股和B股的区别_b股是什么股票

    A股和B股的区别_b股是什么股票A股:正式名称是人民币普通股票。它是由我同境内的公司发行,供境内机构、组织或个人(不含台、港、澳投资者)以人民币认购和交易的普通股股票,我国A股股票市场经过几年快速发展,已经初具规模。.B股:正式名

    2022年8月2日
    8
  • 手把手从零开始学习树莓派教程

    手把手从零开始学习树莓派教程项目开始时间:2021/4/1119:43树莓派4b文章目录1.树莓派系统下载2.操作系统移植3.树莓派联网1.树莓派系统下载这里使用raspbian-buster-full系统,官网速度太慢,使用清华镜像下载也很慢,官网下载种子,然后用迅雷下载比较快。解压后8个g,我用的32gsd卡2.操作系统移植用win32diskimager工具把操作系统写入SD卡,插入树莓派中,启动毫无响应,将sd卡从树莓派上拔下,用读卡器再次插入电脑usb口,显示类似这样:在网上找了很多办法,都不能解决,

    2022年10月14日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号