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中__new__与__init__方法的区别详解
May 04 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
Python基于scapy实现修改IP发送请求的方法示例
Jul 08 Python
Python探索之创建二叉树
Oct 25 Python
Python中is和==的区别详解
Nov 15 Python
Python3爬虫之自动查询天气并实现语音播报
Feb 21 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
PyCharm 创建指定版本的 Django(超详图解教程)
Jun 18 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
使用Keras实现简单线性回归模型操作
Jun 12 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
Pytorch之扩充tensor的操作
Mar 04 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编写的导航条程序
2006/10/09 PHP
php笔记之常用文件操作
2010/10/12 PHP
php下封装较好的数字分页方法
2010/11/23 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
浅析jQuery(function(){})与(function(){})(jQuery)之间的区别
2014/01/09 Javascript
如何防止回车(enter)键提交表单
2014/05/11 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
Nodejs多站点切换Htpps协议详解及简单实例
2017/02/23 NodeJs
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
JS实现图片切换效果
2018/11/17 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
基于jQuery实现挂号平台首页源码
2020/01/06 jQuery
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
vue自定义指令和动态路由实现权限控制
2020/08/28 Javascript
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
CSS3 简写animation
2012/05/10 HTML / CSS
CSS3让登陆面板3D旋转起来
2016/05/03 HTML / CSS
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
咨询公司各岗位职责
2013/12/02 职场文书
教师网络培训感言
2014/03/09 职场文书
应用外语系自荐信
2014/06/26 职场文书
优秀员工自荐书
2015/03/06 职场文书
2015年科协工作总结
2015/05/19 职场文书