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分割TXT文件成4K的TXT文件
May 23 Python
详解Python中的__init__和__new__
Mar 12 Python
Python新手实现2048小游戏
Mar 31 Python
Python 2与Python 3版本和编码的对比
Feb 14 Python
python实现简单登陆流程的方法
Apr 22 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
Python将list中的string批量转化成int/float的方法
Jun 26 Python
使用python脚本自动创建pip.ini配置文件代码实例
Sep 20 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
Django 路由层URLconf的实现
Dec 30 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
Python类方法总结讲解
Jul 26 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
介绍几个array库的新函数 php
2006/12/29 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
2014/06/23 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
Javascript实现CheckBox的全选与取消全选的代码
2010/07/20 Javascript
解决Extjs 4 Panel作为Window组件的子组件时出现双重边框问题
2013/01/11 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
JavaScript对象的浅拷贝与深拷贝实例分析
2018/07/25 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
Python实现的特征提取操作示例
2018/12/03 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
Eyeko美国:屡获殊荣的睫毛膏、眼线笔和眉妆
2018/07/05 全球购物
腾讯技术类校园招聘笔试试题
2014/05/06 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
课外活动实习计划
2015/01/19 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript