transforms结构及用法
打开transform.py,查看里面有哪些方法:
-
最常用的Compose:
功能:将操作组合起来
里面有中心剪裁,转成tensor数据类型等。
-
ToTensor:将PIL或numpy格式的图片转成tensor数据类型。
-
Normalize:归一化
-
Resize:重新剪裁
-
CenterCrop:中心剪裁
transforms.py工具箱
输入(特定类型的图片)—>工具箱创建自己的工具(常用:totensor、resize等方法)—>结果
用法
- tensor数据类型:通过transforms.ToTensor解决两个问题
1、transforms如何使用
先实例化一个transforms.ToTensor()对象
再使用对象名()进行调用
2、Tensor数据类型相较于其他数据类型有什么区别
包含了神经网络中的一些参数(反向传播的一些参数、设备、等等)
from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
import cv2
#python的用法--->tensor数据类型
#通过transforms.ToTensor解决两个问题
#1.transforms该如何使用
#2.为什么需要tensor数据类型
'''绝对路径:D:\pythonProject\pytorch\dataset\train\ants\0013035.jpg 绝对路径要加转义符\
相对路径:dataset/train/ants/0013035.jpg
'''
#读取图片:PIL格式
img_path= "dataset/train/ants/0013035.jpg"
img=Image.open(img_path)
print('PIL读入文件的格式:{}'.format(type(img)))
#读取图片:opencv,numpy格式
cv_img=cv2.imread(img_path)
print('OpenCV读取文件的格式.{}'.format(type(cv_img)))
writer=SummaryWriter("../logs_transforms")
#将PIL文件或numpy文件转换为tensor类型(1.transforms该如何使用)
#实例化一个对象
tensor_trans=transforms.ToTensor()
#调用、传入参数:PIL类型,点击CTRL+P
#transforms.py里内置__call__方法,可以直接用对象名()来调用,可以不用.调用
tensor_img=tensor_trans(img)
print('转换后的PIL文件类型:{}'.format(type(tensor_img)))
#2.为什么需要tensor数据类型:tensor数据类型包括了神经网络需要的一些参数
#直接传入tensor型
writer.add_image("Tensor_img",tensor_img)
writer.close()
控制台:
tensorboard:
注意:上节课用tensorboard读入的图片是PIL—>numpy类型
这节课用tensorboard读入的图片是PIL、numpy—>tensor类型