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时区设置方法与pytz查询时区教程
Nov 27 Python
深入浅析python继承问题
May 29 Python
Django中的Signal代码详解
Feb 05 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
详解django的serializer序列化model几种方法
Oct 16 Python
在python中以相同顺序shuffle两个list的方法
Dec 13 Python
解决python3 pika之连接断开的问题
Dec 18 Python
python_mask_array的用法
Feb 18 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 Python
python数字图像处理数据类型及颜色空间转换
Jun 28 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 加密与解密的斗争
2009/04/17 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
php的闭包(Closure)匿名函数初探
2016/02/14 PHP
详解PHP中websocket的使用方法
2016/09/15 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
当自定义数据属性为json格式字符串时jQuery的data api问题探讨
2013/02/18 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
基于Vue过渡状态实例讲解
2017/09/14 Javascript
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python实现全角半角转换的方法
2014/08/18 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
python requests.get带header
2020/05/05 Python
python动态规划算法实例详解
2020/11/22 Python
在Python中实现字典反转案例
2020/12/05 Python
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
国际领先的学术出版商:Springer
2017/01/11 全球购物
《王二小》教学反思
2014/02/27 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
食品安全主题班会
2015/08/13 职场文书
党员学习型组织心得体会
2019/06/21 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
python内置进制转换函数的操作
2021/06/02 Python
vue elementUI批量上传文件
2022/04/26 Vue.js
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android