首页 > 其他分享 >【pytorch】为什么 ToTensor 后紧接 Normalize 操作?

【pytorch】为什么 ToTensor 后紧接 Normalize 操作?

时间:2023-05-02 20:45:12浏览次数:45  
标签:Normalize 归一化 ToTensor pytorch 图像 操作

学习 pytorch 的 transforms 一节中产生疑问:ToTensor 操作中图像数据满足 [0,255] 条件会进行线性归一化,映射到 [0,1]。在 ToTensor 操作后一般紧接着 Nomalize 操作,又进行了一次标准差归一化。既然已经归一化了一次,为什么还要再来一次?

以下是我在网络上找到的一些答案:

  1. 数据如果分布在 (0,1) 之间,可能实际的 bias,就是神经网络的输入b会比较大,而模型初始化时b=0的,这样会导致神经网络收敛比较慢,经过 Normalize 后,可以加快模型的收敛速度。

注:该回答是网络上一搜几乎就有的回答。

  1. 如果输入层 x 很大,在反向传播时候传递到输入层的梯度就会变得很大。梯度大,学习率就得非常小,否则会越过最优。在这种情况下,学习率的选择需要参考输入层数值大小,而直接将数据归一化操作,能很方便的选择学习率。一般归一化还会做减去均值除以方差的操作, 这种方式可以移除图像的平均亮度值 (intensity)。很多情况下我们对图像的亮度并不感兴趣,而更多地关注其内容,比如在目标识别任务中,图像的整体明亮程度并不会影响图像中存在的是什么物体。此时,在每个样本上减去数据的统计平均值可以移除共同的部分,凸显个体差异

注:此为知乎作者【卓不凡】回答,链接:https://www.zhihu.com/question/293640354/answer/2078956333。

我自己尝试了下,确实图像亮度下降,移除了无关紧要的纹理,凸显了蚂蚁的主要特征。

标签:Normalize,归一化,ToTensor,pytorch,图像,操作
From: https://www.cnblogs.com/hzyuan/p/17368231.html

相关文章

  • 【pytorch】土堆pytorch教程学习(四)Transforms 的使用
    transforms在工具包torchvision下,用来对图像进行预处理:数据中心化、数据标准化、缩放、裁剪、旋转、翻转、填充、噪声添加、灰度变换、线性变换、仿射变换、亮度/饱和度/对比度变换等。transforms本质就是一个python文件,相当于一个工具箱,里面包含诸如Resize、ToTensor、Nor......
  • 医学图像的深度学习的完整代码示例:使用Pytorch对MRI脑扫描的图像进行分割
    图像分割是医学图像分析中最重要的任务之一,在许多临床应用中往往是第一步也是最关键的一步。在脑MRI分析中,图像分割通常用于测量和可视化解剖结构,分析大脑变化,描绘病理区域以及手术计划和图像引导干预,分割是大多数形态学分析的先决条件。本文我们将介绍如何使用QuickNAT对人脑的......
  • 代码笔记27 numpy和pytorch中的多维数组切片
    原来还可以用数组切数组,我算是长见识了。不多说了,直接上代码应该可以明白importnumpyasnpxyz=np.arange(36).reshape(3,4,3)B,N,C=xyz.shapefarthest=np.random.randint(0,N,size=B)#torch.randint(0,N,(B,),dtype=torch.long)#初始时随机选择一点(B......
  • 【pytorch】土堆pytorch教程学习(三)TensorBoard的使用
    TensorBoard是TensorFlow的可视化工具包,提供机器学习实验所需的可视化功能和工具:跟踪和可视化损失及准确率等指标可视化模型图(操作和层)查看权重、偏差或其他张量随时间变化的直方图将嵌入投射到较低的维度空间显示图片、文字和音频数据剖析TensorFlow程序安装Tenso......
  • 关于pytorch包的测试问题
    pytorch的官方github项目有个文件专门用于测试torch是否安装成功,例如:https://github.com/pytorch/pytorch/blob/v1.11.0/test/test_torch.py但是我们平时测试一个pip包是否安装成功,都是直接import来测试,这样的测试方式显然是不够全面,上面的测试方法就是对很多个方法来测试。但是......
  • PyTorch常用操作
    数据集加载1.网络数据集加载数据集:https://pytorch.org/vision/stable/datasets.htmlimporttorchvision.datasetsasdatasetsimporttorchvision.transformsastransforms#定义数据集变换(将图像转换为张量以及对图像进行归一化的操作)transform=transforms.Compose([......
  • Pytorch2 如何通过算子融合和 CPU/GPU 代码生成加速深度学习
    动动发财的小手,点个赞吧!PyTorch中用于图形捕获、中间表示、运算符融合以及优化的C++和GPU代码生成的深度学习编译器技术入门计算机编程是神奇的。我们用人类可读的语言编写代码,就像变魔术一样,它通过硅晶体管转化为电流,使它们像开关一样工作,并允许它们实现复杂的逻辑——这......
  • 【深度学习基础】使用libtorch部署pytorch训练的网络
    下载安装配置:https://pytorch.org/cppdocs/installing.html小例程:https://pytorch.org/cppdocs/frontend.html官方:https://pytorch.org/tutorials/beginner/Intro_to_TorchScript_tutorial.htmllibtorch的API官网文档:https://pytorch.org/cppdocs/api/library_root.html配置环......
  • PyTorch保存模型断点以及加载断点继续训练
       在训练神经网络时,用到的数据量可能很大,训练周期较长,如果半途中断了训练,下次从头训练就会很费时间,这时我们就想断点续训。一、神经网络模型的保存,基本两种方式:1.保存完整模型model, torch.save(model,save_path) 2.只保存模型的参数, torch.save(model.state_dict()......
  • 利用pytorch深度学习框架验证骰子的合格性
    利用pytorch深度学习框架验证骰子的合格性骰子生产的合格性可以用概率来表达,比如每个面出现的概率大概都是1/6。importtorchfromd2limporttorchasd2lfromtorch.distributionsimportmultinomial#多次扔骰子出现每个面的概率服从多项式分布fair_probs=torch.ones(......