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操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
python使用matplotlib绘图时图例显示问题的解决
Apr 27 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
python脚本之一键移动自定格式文件方法实例
Sep 02 Python
Python with标签使用方法解析
Jan 17 Python
浅谈keras 模型用于预测时的注意事项
Jun 27 Python
Tensorflow中批量读取数据的案列分析及TFRecord文件的打包与读取
Jun 30 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
上帝为你开了一扇窗之Tkinter常用函数详解
Jun 02 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 Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
Yii Framework框架使用PHPExcel组件的方法示例
2019/07/24 PHP
event.srcElement 用法笔记e.target
2009/12/18 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
利用location.hash实现跨域iframe自适应
2010/05/04 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
解析js如何获取当前url中的参数值并复制给input
2013/06/23 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
tuzhu_req.js 实现仿百度图片首页效果
2015/08/11 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JS实现Fisheye效果动感放大菜单代码
2015/10/21 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
JavaScript常用8种数组去重代码实例
2020/09/09 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python里disconnect UDP套接字的方法
2015/04/23 Python
python的socket编程入门
2018/01/29 Python
django1.11.1 models 数据库同步方法
2018/05/30 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
德国奢侈品网上商城:Mytheresa
2016/08/24 全球购物
青年文明号事迹材料
2014/01/18 职场文书
教师考核评语
2014/04/28 职场文书
村庄绿化方案
2014/05/07 职场文书
三好生演讲稿
2014/09/12 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
Python循环之while无限迭代
2022/04/30 Python