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 相关文章推荐
Windows下安装python MySQLdb遇到的问题及解决方法
Mar 16 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
Python Tkinter模块实现时钟功能应用示例
Jul 23 Python
Python sklearn KFold 生成交叉验证数据集的方法
Dec 11 Python
对Python协程之异步同步的区别详解
Feb 19 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
django-rest-swagger对API接口注释的方法
Aug 29 Python
详解Django admin高级用法
Nov 06 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
python实现mean-shift聚类算法
Jun 10 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
python神经网络编程之手写数字识别
May 08 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利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
JavaScript面向对象编程
2008/03/02 Javascript
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
vue+element实现批量删除功能的示例
2018/02/28 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
Vue 开发必须知道的36个技巧(小结)
2019/10/09 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
Python写的英文字符大小写转换代码示例
2015/03/06 Python
Python算法应用实战之栈详解
2017/02/04 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Python xlwings插入Excel图片的实现方法
2021/02/26 Python
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
演讲比赛策划方案
2014/06/11 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2015年关爱留守儿童工作总结
2015/05/22 职场文书
外出听课学习心得体会
2016/01/15 职场文书
物业管理交接协议书
2016/03/24 职场文书
检讨书范文
2019/04/16 职场文书
Mysql MVCC机制原理详解
2021/04/20 MySQL
MySQL 8.0 之不可见列的基本操作
2021/05/20 MySQL
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
一文解答什么是MySQL的回表
2022/08/05 MySQL