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绘图库Matplotlib的安装
Jul 03 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
详解使用python的logging模块在stdout输出的两种方法
May 17 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
python中实现控制小数点位数的方法
Jan 24 Python
python爬虫的一个常见简单js反爬详解
Jul 09 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Django集成MongoDB实现过程解析
Dec 01 Python
matplotlib制作雷达图报错ValueError的实现
Jan 05 Python
Python 居然可以在 Excel 中画画你知道吗
Feb 15 Python
Python与C++中梯度方向直方图的实现
Mar 17 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
1 Tube Radio
2021/03/02 无线电
发布一个用PHP fsockopen写的HTTP下载的类
2007/02/22 PHP
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
深入理解JavaScript系列(4) 立即调用的函数表达式
2012/01/15 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
jQuery对象与DOM对象之间的相互转换
2015/03/03 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
python里使用正则表达式的组嵌套实例详解
2017/10/24 Python
python多维数组切片方法
2018/04/13 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
pycharm运行scrapy过程图解
2019/11/22 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
H5 canvas中width、height和style的宽高区别详解
2018/11/02 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
工程管理专业毕业生自荐信
2014/01/24 职场文书
元旦标语大全
2014/10/09 职场文书
单位同意报考证明
2015/06/17 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
Python中rapidjson参数校验实现
2021/07/25 Python
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers