PyTorch深度学习入门笔记(五)Transforms的使用
课程学习笔记,课程链接
学习笔记同步发布在我的个人网站上,欢迎来访查看。
文章目录
- 一、Transforms的使用
- 二、Tensor数据类型
- 三、常见的Transforms
- 总结
一、Transforms的使用
torchvision中的transforms主要是对图片进行一些变换。
tranforms对应 tranforms.py 文件,里面定义了很多类,输入一个图片对象,返回经过处理的图片对象。
transforms.py就像一个工具箱,里面定义的各种类就像各种工具,图片就是输入对象,经过工具处理,输出期望的图片结果。
现在通过 transforms.ToTensor去看两个问题:
- 1、transforms该如何使用(python)
- 2、为什么我们需要 Tensor 数据类型
ToTensor功能是将 PIL Image 类型 或者numpy.ndarray类型的图片对象转换为 tensor类型。
使用Demo:
from torchvision import transforms
from PIL import Imageimg_path = "testdata/train/ants_image/6743948_2b8c096dda.jpg"
img = Image.open(img_path)
print(img)
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
print(tensor_img)
所以使用transforms的方法就是 先实例化选中的类,然后用实例化的对象去处理图片就行。
二、Tensor数据类型
将第一节中的代码复制到 python 控制台,回车,可在右侧看到各种变量和对象的具体信息:
tensor 数据类型可以理解为包装了反向神经网络一些理论基础参数。在神经网络中,要将数据先转换为Tensor类型,再进行训练。
测试代码:
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
from PIL import Imageimg_path = "testdata/train/ants_image/6743948_2b8c096dda.jpg"
img = Image.open(img_path)writer = SummaryWriter("logs")tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)writer.add_image("Tensor_Image",tensor_img)
writer.close()
结果:
三、常见的Transforms
常用的输入图片对象的数据类型
- PIL : Image.open()
- tensor : ToTensor()
- ndarrays: cv.imread()
常用的Transform有:
- ToTensor() :将图片对象类型转为 tensor
- Normalize() :对图像像素进行归一化计算
- Resize():重新设置 PIL Image的大小,返回也是PIL Image格式
- Compose(): 输入为 transforms类型参数的列表,即
Compose([transforms参数1, transforms参数2], ...)
目的是将几个 transforms操作打包成一个,比如要先进行大小调整,然后进行归一化计算,返回tensor类型,则可以将 ToTensor、Normalize、Resize,按操作顺序输入到Compose中。
示例代码:
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
import osroot_path = "hymenoptera_data/train/ants"
img_name = "7759525_1363d24e88.jpg"
img_path = os.path.join(root_path,img_name)
img = Image.open(img_path)writer = SummaryWriter("logs")# ToTensor
trans_totensor = transforms.ToTensor() # instantiation
img_tensor = trans_totensor(img)
writer.add_image("Tensor", img_tensor)# Normalize
print(img_tensor[0][0][0])
trans_norm = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])
img_norm = trans_norm(img_tensor)
print(img_norm[0][0][0])
writer.add_image("Normalize", img_norm)#Resize
print(img.size)
trans_resize = transforms.Resize((512,512))
img_resize = trans_resize(img) # return type still is PIL image
img_resize = trans_totensor(img_resize)
writer.add_image("Resize", img_resize)# Compose - resize -2
trans_resize_2 = transforms.Resize(512)
tran_compose = transforms.Compose([trans_resize_2, trans_totensor])
img_resize2 = tran_compose(img)
writer.add_image("Compose", img_resize2)writer.close()
结果:
总结
- 关注输入和输出类型
- 多看官方文档
- 关注方法需要什么参数
PyTorch深度学习入门笔记(五)Transforms的使用相关推荐
- pytorch深度学习入门笔记
Pytorch 深度学习入门笔记 作者:梅如你 学习来源: 公众号: 阿力阿哩哩.土堆碎念 B站视频:https://www.bilibili.com/video/BV1hE411t7RN? 中国大学 ...
- PyTorch深度学习入门笔记(五)torchvision中DataLoader的使用
dataloader简介 dataset在程序中起到的作用是告诉程序数据在哪,每个索引所对应的数据是什么.相当于一系列的存储单元,每个单元都存储了数据.这里可以类比成一幅扑克牌,一张扑克牌就是一个数据 ...
- 深度学习入门笔记(十五):深度学习框架(TensorFlow和Pytorch之争)
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(五):神经网络的编程基础
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(五):神经网络的学习
专栏--深度学习入门笔记 推荐文章 深度学习入门笔记(一):机器学习基础 深度学习入门笔记(二):神经网络基础 深度学习入门笔记(三):感知机 深度学习入门笔记(四):神经网络 深度学习入门笔记(五) ...
- 深度学习入门笔记(十六):计算机视觉之边缘检测
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(二十):经典神经网络(LeNet-5、AlexNet和VGGNet)
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(十八):卷积神经网络(一)
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
- 深度学习入门笔记(十七):深度学习的极限在哪?
欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...
最新文章
- Elide 4.3.1 发布,雅虎开源的应用数据 API 搭建平台
- 3级联动 ajax java_java+ajax(三级连动下拉框)
- 好文推荐 | 缓存与数据库一致性问题深度剖析 (修订)
- XAMPP on Mac 组态 Virual Host
- Python 之数据类型
- 秒杀青椒、博导?某高校本科生:宣称主持40余项学生项目、拿下56项国家专利...
- Java-类与对象的创建
- 2020 大厂研发岗薪酬排名出炉,看完我真的拖后腿了。。。
- jquery ajax 跨域请求
- java 父类构造函数_Java基础系列 - 子类继承父类,调用父类的构造函数
- Spring事务-1
- 领英使用手册—管理,使用领英linkedin账号的技巧方法
- AXD 调试经验,使用及问题
- 进制转换简单实现代码
- IT业台风警报(一)——望天
- 辛弃疾《青玉案·元夕》
- win10商店打不开_win10 64位系统打不开美图秀秀是啥原因呢
- UITT 自动跟单系统
- 【图解算法数据结构】(九)数学
- 《软件安装与使用教程》— 安装Proteus8仿真软件最新详细教程
热门文章
- 有python专业的世界大学_2020年QS计算机专业排名进入世界前50的,除了G5,还有这所大学!...
- 企业使用云计算机的好处,三个问题,让你彻底明白企业为什么上云以及企业上云的好处...
- Python:folium地图标记icon分组展示
- 二元logistic模型案例_基于Logistic回归的二元分类应用(含公式推导)
- ansys_lsdyna输出.k文件lsprepost输出部件加速度
- 几种经典的卷积神经网络
- 博实转债上市价格预测
- 老外名字中间的点怎么输入 微软拼音 @
- Mybatis08:使用注解开发
- Web安全——文件上传漏洞