pytorch中的transforms模块实例详解

 更新时间:2019年12月31日 16:19:27   作者:gaishi_hero  
今天小编就为大家分享一篇pytorch中的transforms模块实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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模块实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决Ubuntu pip 安装 mysql-python包出错的问题

    解决Ubuntu pip 安装 mysql-python包出错的问题

    今天小编就为大家分享一篇解决Ubuntu pip 安装 mysql-python包出错的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 如何升级python包到指定版本

    如何升级python包到指定版本

    这篇文章主要介绍了如何升级python包到指定版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Python正则表达式学习小例子

    Python正则表达式学习小例子

    这篇文章主要介绍了Python正则表达式学习小例子,学习python的朋友可以参考一下
    2020-03-03
  • Python内置函数之filter map reduce介绍

    Python内置函数之filter map reduce介绍

    Python内置了一些非常有趣、有用的函数,如:filter、map、reduce,都是对一个集合进行处理,filter很容易理解用于过滤,map用于映射,reduce用于归并. 是Python列表方法的三架马车
    2014-11-11
  • 对python opencv 添加文字 cv2.putText 的各参数介绍

    对python opencv 添加文字 cv2.putText 的各参数介绍

    今天小编就为大家分享一篇对python opencv 添加文字 cv2.putText 的各参数介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python创建日历实例

    Python创建日历实例

    这篇文章主要介绍了Python创建日历实例,不使用Python提供的calendar实现,需要的朋友可以参考下
    2014-08-08
  • 关于Python字符串显示u...的解决方式

    关于Python字符串显示u...的解决方式

    这篇文章主要介绍了关于Python字符串显示u...的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Mac下Anaconda的安装和使用教程

    Mac下Anaconda的安装和使用教程

    这篇文章主要介绍了Mac下Anaconda的安装和使用教程,非常不错,具有一定的参考价借鉴价值,需要的朋友可以参考下
    2018-11-11
  • python中的函数用法入门教程

    python中的函数用法入门教程

    这篇文章主要介绍了python中的函数用法,包括了函数的定义及参数的各种注意事项等,对Python初学者有很好的借鉴价值,需要的朋友可以参考下
    2014-09-09
  • djang常用查询SQL语句的使用代码

    djang常用查询SQL语句的使用代码

    这篇文章主要介绍了djang常用查询SQL语句的使用代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02

最新评论