pytorch中的transforms模块实例详解


Posted in Python onDecember 31, 2019

pytorch中的transforms模块中包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的,下面我们讲解几种最常用的函数,详细的内容还请参考pytorch官方文档(放在文末)。

data_transforms = transforms.Compose([
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(),
    transforms.ToTensor(),
    transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
  ])

从上面的data_transforms变量中我们能够看出进行了多种变换,而Compose方法是将多种变换组合起来。data_transforms中一共包含了四个变换,前两个是对PILImage进行的,分别对其进行随机大小(默认原始图像大小的0.08-1.0)和随机宽高比(默认原始图像宽高比的3/4-4/3)的裁剪,之后resize到指定大小224;以及对原始图像进行随机(默认0.5概率)的水平翻转。

第三个transforms.ToTensor()的变换操作是关键一步,它将PILImage转变为torch.FloatTensor的数据形式,这种数据形式一定是C x H x W的图像格式加上[0,1]的大小范围。它将颜色通道这一维从第三维变换到了第一维。

最后的Normalize变换是对tensor这种数据格式进行的,它的操作是用给定的均值和标准差分别对每个通道的数据进行正则化。具体来说,给定均值(M1,...,Mn),给定标准差(S1,..,Sn),其中n是通道数(一般是3),对每个通道进行如下操作:

output[channel] = (input[channel] - mean[channel]) / std[channel]

最后需要强调一点的是,这几个变换的先后顺序有一定的讲究,因为不同的方法所处理的对象不一样,前两种变换是对PILImage进行的,而Normalize则是对tensor进行的,所以处理PILImage的变换方法(大多数方法)都需要放在ToTensor方法之前,而处理tensor的方法(比如Normalize方法)就要放在ToTensor方法之后。

附上pytorch官方参考:https://pytorch.org/docs/stable/torchvision/transforms.html?highlight=torchvision%20transforms

以上这篇pytorch中的transforms模块实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
为python设置socket代理的方法
Jan 14 Python
Python列表(list)常用操作方法小结
Feb 02 Python
Python用Bottle轻量级框架进行Web开发
Jun 08 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
python获取程序执行文件路径的方法(推荐)
Apr 26 Python
Python numpy实现二维数组和一维数组拼接的方法
Jun 05 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
Python 内存管理机制全面分析
Jan 16 Python
Django实现翻页的示例代码
May 24 Python
Pytorch 实现权重初始化
Dec 31 #Python
pytorch 归一化与反归一化实例
Dec 31 #Python
Pytorch 数据加载与数据预处理方式
Dec 31 #Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 #Python
pytorch: Parameter 的数据结构实例
Dec 31 #Python
Python测试线程应用程序过程解析
Dec 31 #Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 #Python
You might like
Yii2搭建后台并实现rbac权限控制完整实例教程
2016/04/28 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
详解阿里云视频直播PHP-SDK接入教程
2020/07/09 PHP
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
Jquery 自定义动画概述及示例
2013/03/29 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
jquery中交替点击事件toggle方法的使用示例
2013/12/08 Javascript
AngularJS基础知识
2014/12/21 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
微信小程序实现多行文字滚动
2020/11/18 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
详解Python中的日志模块logging
2015/06/19 Python
python daemon守护进程实现
2016/08/27 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
python验证码识别实例代码
2018/02/03 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
2019/05/16 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
几道Web/Ajax的面试题
2016/11/05 面试题
文秘应届生求职信
2014/07/05 职场文书
大学生逃课检讨书
2015/05/04 职场文书
小学主题班会教案
2015/08/17 职场文书
职业规划从高考志愿专业选择开始
2019/08/08 职场文书