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 相关文章推荐
使用Python的turtle模块画图的方法
Nov 15 Python
python机器学习实战之最近邻kNN分类器
Dec 20 Python
python调用系统ffmpeg实现视频截图、http发送
Mar 06 Python
新手入门Python编程的8个实用建议
Jul 12 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
Python文本处理简单易懂方法解析
Dec 19 Python
Python有参函数使用代码实例
Jan 06 Python
python yield和Generator函数用法详解
Feb 10 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
python连接mongodb数据库操作数据示例
Nov 30 Python
Python查找算法的实现 (线性、二分,分块、插值查找算法)
Apr 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
php获取post中的json数据的实现方法
2011/06/08 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
2014/10/30 PHP
php静态文件生成类实例分析
2015/01/03 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
function foo的原型与prototype属性解惑
2010/11/19 Javascript
Javascript类定义语法,私有成员、受保护成员、静态成员等介绍
2011/12/08 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
js实现验证码功能
2020/07/24 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
Django中间件实现拦截器的方法
2018/06/01 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
玲玲的画教学反思
2014/02/04 职场文书
十八届三中全会学习方案
2014/02/16 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
三八妇女节寄语
2015/02/27 职场文书
会计实训总结范文
2015/08/03 职场文书
初中语文教师研修日志
2015/11/13 职场文书
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
2022/01/18 PostgreSQL
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫