网站开发 h5,网络维护公司经营范围,长沙网络优化推广,舟山市规划建设局网站目录 3.5. 图像分类数据集1#xff09;读取数据集2#xff09;读取小批量3#xff09;整合所有组件4#xff09;小结 .
3.5. 图像分类数据集
我们将使用Fashion-MNIST数据集#xff0c;作为图像分类数据集。
%matplotlib inline
import torch
import torchvision
from … 目录 3.5. 图像分类数据集1读取数据集2读取小批量3整合所有组件4小结 .
3.5. 图像分类数据集
我们将使用Fashion-MNIST数据集作为图像分类数据集。
%matplotlib inline
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
from d2l import torch as d2ld2l.use_svg_display().
1读取数据集
可以通过框架中的内置函数将Fashion-MNIST数据集下载并读取到内存中。
# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式
# 并除以255使得所有像素的数值均在01之间
trans transforms.ToTensor()
mnist_train torchvision.datasets.FashionMNIST(root../data, trainTrue, transformtrans, downloadTrue)
mnist_test torchvision.datasets.FashionMNIST(root../data, trainFalse, transformtrans, downloadTrue)Fashion-MNIST由10个类别的图像组成 每个类别由训练数据集train dataset中的6000张图像 和测试数据集test dataset中的1000张图像组成。
# 数据集大小
len(mnist_train), len(mnist_test)
# 输出(60000, 10000)# 数据集图像尺寸
mnist_train[0][0].shape
# 输出torch.Size([1, 28, 28])# 数据集类别
def get_fashion_mnist_labels(labels): #save返回Fashion-MNIST数据集的文本标签text_labels [t-shirt, trouser, pullover, dress, coat,sandal, shirt, sneaker, bag, ankle boot]return [text_labels[int(i)] for i in labels]
现在可以创建一个函数来可视化这些样本。
def show_images(imgs, num_rows, num_cols, titlesNone, scale1.5): #save绘制图像列表figsize (num_cols * scale, num_rows * scale)_, axes d2l.plt.subplots(num_rows, num_cols, figsizefigsize)axes axes.flatten()for i, (ax, img) in enumerate(zip(axes, imgs)):if torch.is_tensor(img):# 图片张量ax.imshow(img.numpy())else:# PIL图片ax.imshow(img)ax.axes.get_xaxis().set_visible(False)ax.axes.get_yaxis().set_visible(False)if titles:ax.set_title(titles[i])return axesX, y next(iter(data.DataLoader(mnist_train, batch_size18)))
show_images(X.reshape(18, 28, 28), 2, 9, titlesget_fashion_mnist_labels(y));.
2读取小批量
通过内置数据迭代器我们可以随机打乱了所有样本从而无偏见地读取小批量。
batch_size 256def get_dataloader_workers(): #save使用4个进程来读取数据return 4train_iter data.DataLoader(mnist_train, batch_size, shuffleTrue,num_workersget_dataloader_workers())读取训练数据所需的时间。
timer d2l.Timer()
for X, y in train_iter:continue
f{timer.stop():.2f} sec# 输出3.37 sec.
3整合所有组件
定义load_data_fashion_mnist函数获取Fashion-MNIST数据集返回训练集和验证集的数据迭代器。 函数接受可选参数resize用来将图像大小调整为另一种形状。
def load_data_fashion_mnist(batch_size, resizeNone): #save下载Fashion-MNIST数据集然后将其加载到内存中trans [transforms.ToTensor()]if resize:trans.insert(0, transforms.Resize(resize))trans transforms.Compose(trans)mnist_train torchvision.datasets.FashionMNIST(root../data, trainTrue, transformtrans, downloadTrue)mnist_test torchvision.datasets.FashionMNIST(root../data, trainFalse, transformtrans, downloadTrue)return (data.DataLoader(mnist_train, batch_size, shuffleTrue,num_workersget_dataloader_workers()),data.DataLoader(mnist_test, batch_size, shuffleFalse,num_workersget_dataloader_workers()))下面通过指定resize参数来测试load_data_fashion_mnist函数的图像大小调整功能。
train_iter, test_iter load_data_fashion_mnist(32, resize64)
for X, y in train_iter:print(X.shape, X.dtype, y.shape, y.dtype)break# 输出
torch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64现在已经准备好使用Fashion-MNIST数据集便于下面的章节调用来评估各种分类算法。
.
4小结 Fashion-MNIST是一个服装分类数据集由10个类别的图像组成。我们将在后续章节中使用此数据集来评估各种分类算法。 我们将高度像素宽度像素图像的形状记为或,。 数据迭代器是获得更高性能的关键组件。依靠实现良好的数据迭代器利用高性能计算来避免减慢训练过程。
. 声明资源可能存在第三方来源若有侵权请联系删除