街景门牌号码(SVHN)是用于开发机器学习和对象识别算法的真实图像数据集。 它是最常用的基准数据集之一,因为它需要最少的数据预处理和格式化。 尽管它与MNIST有一些相似之处,其中图像的裁剪数字很小,但SVHN合并了更多数量级的标记数据(超过600,000位数的图像)。 它也体现了现实世界中要识别自然场景图像中数字和数字的难题,图像没有任何对比度归一化,包含重叠的数字和分散注意力的特征,这使得与MNIST相比,这是一个更加困难的问题。
https://embed.notionlytics.com/wt/ZXlKd1lXZGxTV1FpT2lJNU56SXdNVEUyWmpVMU9XTTBObVEzT0dVME16azFNV1ZpTXprMU1EUTROeUlzSW5kdmNtdHpjR0ZqWlZSeVlXTnJaWEpKWkNJNklsZHNTR2hsVEZSUFdXeHpaVmRhUW1ZNU1YQmxJbjA9
通过导入所需的库来启动笔记本。
import torch
import torchvision
import numpy as np
import matplotlib.pyplot as plt
import torch.nn as nn
import torch.nn.functional as F
from torchvision.datasets import SVHN
from torchvision.transforms import ToTensor
from torchvision.utils import make_grid
from torch.utils.data.dataloader import DataLoader
from torch.utils.data import random_split
%matplotlib inline
现在,我们从torchvision.datasets使用SVHN类下载数据并创建PyTorch数据集,然后使用ToTensor()将数据集转换为tensor。
dataset = SVHN(root='data/', download=True, transform=ToTensor())
接下来,我们将使用random_split helper函数为数据集中的验证集预留12000张图像。
val_size = 12000
train_size = len(dataset) - val_size
train_ds, val_ds = random_split(dataset, [train_size, val_size])
len(train_ds), len(val_ds)
输出:
(61257, 12000)
现在,我们可以创建PyTorch数据加载器以用于批处理大小为64的训练和验证集。