PyTorch 官方文档:pytorch.org/docs/stable/index.html
PyTorch 中文文档:github.com/zergtant/pytorch-handbook
PyTorch对数据读取和处理自带了一些重要的工具包,包括:
数据加载:from torch.utils.data import DataLoader
- 会在
enumerate(self.trainloader)
时调用自定义数据处理的__getitem__
方法,对训练数据进行读取
数据定义:from torch.utils.data import Dataset
数据转换:from torchvision import transforms
- 数据转换先在模型文件的
self.composed_transforms_tr = transforms.Compose
中进行定义 - 通过
transforms.py
调用数据转换
【1】torchvision.transforms
【2】__init__ 和 __call__
【1】torchvision.transforms
torchvision.transforms
是 PyTorch 中的图像预处理包,一般会用 transforms.Compose
将多个处理步骤整合到一起,比如:
from torchvision import transforms
composed_transforms_tr = transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor()
])
其他预处理函数:
Resize:把给定的图片resize到指定大小
Normalize:对图像进行标准化
ToTensor:将像素值在范围[0,255]内的图像转换为范围在[0.0,1.0]的torch.Tensor
ToPILImage:将tensor转换为PIL图像
CenteCrop:在图片的中间区域进行裁剪
RandomCrop:在一个随机的位置进行裁剪
RandomHorizontalFlip:以0.5的概率水平翻转给定的PIL图像
RandomVerticalFlip:以0.5的概率竖直翻转给定的PIL图像
RandomResizedCrop:将PIL图像裁剪成任意大小和纵横比
Grayscale:将图像转换为灰度图像
RandomGrayscale:将图像以一定的概率转换为灰度图像
FiceCrop:把图像裁剪为四个角和一个中心
ColorJitter:随机改变图像的亮度对比度和饱和度
【2】__init__ 和 __call__
__init__
类的初始化函数,__call__
使类具有类似于函数的功能。
class Cat():
def __init__(self, name, init_age):
super().__init__
self.name = name
self.age = init_age
print("{} is playing".format(self.name))
print("{} is {} year-old".format(self.name, self.age))
def __call__(self, add_age):
cur_age = self.age + add_age
print("Now {} is {} year-old".format(self.name, cur_age))
cat = Cat('kamiya', 2)
cat(1)
>>>
kamiya is playing
kamiya is 2 year-old
Now kamiya is 3 year-old
读取数据
参考文章:
https://zhuanlan.zhihu.com/p/30934236
https://blog.csdn.net/rogerfang/article/details/82291464
https://blog.csdn.net/zhenaoxi1077/article/details/80953227
torchvision.transforms 包
参考文章:
https://zhuanlan.zhihu.com/p/27382990