一、Torchvision
torchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。以下是torchvision的构成:
- torchvision.datasets: 一些加载数据的函数及常用的数据集接口;
- torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;
- torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;
- torchvision.utils: 其他的一些有用的方法
二、datasets和transforms的使用
简单展示datasets和transforms的结合使用,并显示在tensorboard上
import torchvision
from torch.utils.tensorboard import SummaryWriter
# torchvision的transform设置对数据的操作
dataset_transform = torchvision.transforms.Compose([
torchvision.transforms.ToTensor()
])
# torchvision的dataset数据集
# root表示下载目录,train为True表示数据集、False表示训练集
# download表示是否从官网下载资源,transform表示对数据进行的操作
train_set = torchvision.datasets.CIFAR10(root="./dataset",
train=True, download=True, transform=dataset_transform)
test_set = torchvision.datasets.CIFAR10(root="./dataset",
train=False, download=True, transform=dataset_transform)
# 速度下载比较慢的话,可以把链接复制到迅雷下载,然后把资源压缩包放在root设置的目录下
# 并且会自动把压缩包解压
writer = SummaryWriter("logs")
for i in range(10):
img, terget = test_set[i]
writer.add_image("test_set", img, i)
writer.close()
三、datasets和DataLoader的使用
3.1 DataLoader概念
DataLoader与DataSet是PyTorch数据读取的核心。
“torch.utils.DataLoader”的作用是构建一个可迭代的数据装载器,每次执行循环的时候,就从中读取一批Batchsize大小的样本进行训练。
其主要参数有五项:
-
dataset:隶属DataSet类,表示数据从哪里读取以及如何读取
-
batchsize:批大小
-
num_works:是否多进程读取数据
-
shuffle:每个epoch是否乱序
-
drop_last:当样本数不能被batchsize整除时,是否舍弃最后一批数据
上述主要参数中num_works通常在单进程时默认为“0”,也可以在支持多进程的设备上设置为允许的“4 | 8 | 16”等。shuffle则通常设置为使用乱序(True),以使得每次数据读取具有随机性。
材料取自
3.2 代码展示
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
test_data = torchvision.datasets.CIFAR10(root="./dataset",
train=False, transform=torchvision.transforms.ToTensor())
# 从数据集中取数据,每次取64个,随机采样,进程为主进程,余数不丢掉
test_loader = DataLoader(dataset=test_data, batch_size=64,
shuffle=True, num_workers=0, drop_last=False)
writer = SummaryWriter("logs")
step = 0
for data in test_loader:
imgs, targets = data
# 记住这里是add_images要加s
writer.add_images("dataloader", imgs, step)
step = step + 1
writer.close()
3.3 结果展示
每次取出64张图片,并且最后16张不舍去
【参考 PyTorch深度学习快速入门教程 -小土堆】