本文是笔者在学习深度学习过程中的代码分享,主要是对实现代码的一些注释
调用pytorch加载FashionMNIST数据集
import torch
import torchvision
from torch.utils import data
from torchvision import transforms
import matplotlib.pyplot as plt
#下载数据
trans=transforms.ToTensor()#通过ToTensor将图像数据从PTL类型转换成32位浮点数格式(除以255使像素均值在0到1)
mnist_train=torchvision.datasets.FashionMNIST(root="../data",train=True,transform=trans,download=True)
mnist_test=torchvision.datasets.FashionMNIST(root="../data",train=False,transform=trans,download=True)
#数字标签索引及其文本名称之间进行转换函数
def get_fashion_mnist_labels(labels):
"""返回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, titles=None, scale=1.5):
"""绘制图像列表"""
figsize = (num_cols * scale, num_rows * scale) # 设置画布大小
_, axes =plt.subplots(num_rows, num_cols, figsize=figsize) # 创建子图网格
axes = axes.flatten() # 将子图数组转换为一维数组便于遍历
for i, (ax, img) in enumerate(zip(axes, imgs)): # 遍历每个子图和对应的图像,zip 函数将 axes 和 imgs 两个列表的元素打包成一个个元组
if torch.is_tensor(img):
ax.imshow(img.numpy()) # 如果图像是PyTorch张量,将张量转换为NumPy数组并显示
else:
ax.imshow(img) # 如果图像不是张量(例如PIL图像),直接显示图像
ax.axes.get_xaxis().set_visible(False)
ax.axes.get_yaxis().set_visible(False) # 隐藏x、y轴
if titles:
ax.set_title(titles[i]) # 为每个子图设置标题
return axes # 返回子图数组
X, y = next(iter(data.DataLoader(mnist_train, batch_size=18)))
show_images(X.reshape(18, 28, 28), 2, 9, titles=get_fashion_mnist_labels(y));
plt.show()
运行结果显示