news 2026/3/23 21:59:26

线性与Softmax回归的实现与应用:Fashion-MNIST服装分类数据集与高性能数据迭代器实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
线性与Softmax回归的实现与应用:Fashion-MNIST服装分类数据集与高性能数据迭代器实现

图像分类数据集

学习目标

通过本课程,学员将了解到Fashion-MNIST是一个服装分类数据集。具体来说,学员会学习到Fashion-MNIST是一个服装分类数据集由10个类别的图像组成、数据迭代器是获得更高性能的关键组件、依靠实现良好的数据迭代器、利用高性能计算来避免减慢训练过程等重要概念。

相关知识点

  • Fashion-MNIST数据集

学习内容

1 Fashion-MNIST数据集

MNIST数据集
是图像分类中广泛使用的数据集之一,但作为基准数据集过于简单。
我们将使用类似但更复杂的Fashion-MNIST数据集。

pip install d2l==1.0.3
%matplotlib inlineimporttorchimporttorchvisionfromtorch.utilsimportdatafromtorchvisionimporttransformsfromd2limporttorchasd2l d2l.use_svg_display()
1.1 读取数据集
!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/d41fb34e144511f0b5c8fa163edcddae/FashionMNIST.zip
!unzip FashionMNIST.zip
# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,# 并除以255使得所有像素的数值均在0~1之间trans=transforms.ToTensor()mnist_train=torchvision.datasets.FashionMNIST(root="./data",train=True,transform=trans,download=False)mnist_test=torchvision.datasets.FashionMNIST(root="./data",train=False,transform=trans,download=False)

Fashion-MNIST由10个类别的图像组成,每个类别由训练数据集(train dataset)中的6000张图像和测试数据集(test dataset)中的1000张图像组成。因此,训练集和测试集分别包含60000和10000张图像。测试数据集不会用于训练,只用于评估模型性能。

len(mnist_train),len(mnist_test)

每个输入图像的高度和宽度均为28像素。数据集由灰度图像组成,其通道数为1。为了简洁起见,本课程将高度hhh像素、宽度www像素图像的形状记为h×wh \times wh×w或(hhh,www)。

mnist_train[0][0].shape

Fashion-MNIST中包含的10个类别,分别为t-shirt(T恤)、trouser(裤子)、pullover(套衫)、dress(连衣裙)、coat(外套)、sandal(凉鞋)、shirt(衬衫)、sneaker(运动鞋)、bag(包)和ankle boot(短靴)。
以下函数用于在数字标签索引及其文本名称之间进行转换。

defget_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)]foriinlabels]

我们现在可以创建一个函数来可视化这些样本。

defshow_images(imgs,num_rows,num_cols,titles=None,scale=1.5):#@save"""绘制图像列表"""figsize=(num_cols*scale,num_rows*scale)_,axes=d2l.plt.subplots(num_rows,num_cols,figsize=figsize)axes=axes.flatten()fori,(ax,img)inenumerate(zip(axes,imgs)):iftorch.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)iftitles:ax.set_title(titles[i])returnaxes

以下是训练数据集中前几个样本的图像及其相应的标签。

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));

1.2 读取小批量

为了使我们在读取训练集和测试集时更容易,我们使用内置的数据迭代器,而不是从零开始创建。
回顾一下,在每次迭代中,数据加载器每次都会读取一小批量数据,大小为batch_size
通过内置数据迭代器,我们可以随机打乱了所有样本,从而无偏见地读取小批量。

batch_size=256defget_dataloader_workers():#@save"""使用4个进程来读取数据"""return4train_iter=data.DataLoader(mnist_train,batch_size,shuffle=True,num_workers=get_dataloader_workers())

我们看一下读取训练数据所需的时间。

timer=d2l.Timer()forX,yintrain_iter:continuef'{timer.stop():.2f}sec'

out:

'3.24 sec'
1.3 整合所有组件

现在我们定义load_data_fashion_mnist函数,用于获取和读取Fashion-MNIST数据集。
这个函数返回训练集和验证集的数据迭代器。
此外,这个函数还接受一个可选参数resize,用来将图像大小调整为另一种形状。

defload_data_fashion_mnist(batch_size,resize=None):#@save"""下载Fashion-MNIST数据集,然后将其加载到内存中"""trans=[transforms.ToTensor()]ifresize:trans.insert(0,transforms.Resize(resize))trans=transforms.Compose(trans)mnist_train=torchvision.datasets.FashionMNIST(root="./data",train=True,transform=trans,download=False)mnist_test=torchvision.datasets.FashionMNIST(root="./data",train=False,transform=trans,download=False)return(data.DataLoader(mnist_train,batch_size,shuffle=True,num_workers=get_dataloader_workers()),data.DataLoader(mnist_test,batch_size,shuffle=False,num_workers=get_dataloader_workers()))

下面,我们通过指定resize参数来测试load_data_fashion_mnist函数的图像大小调整功能。

train_iter,test_iter=load_data_fashion_mnist(32,resize=64)forX,yintrain_iter:print(X.shape,X.dtype,y.shape,y.dtype)break

Out:

torch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 15:17:40

GPT-SoVITS部署成本测算:每月运行费用与硬件配置建议

GPT-SoVITS部署成本测算:每月运行费用与硬件配置建议 在AI语音技术快速渗透内容创作、智能交互的今天,个性化语音合成已不再是科技巨头的专属能力。一个普通人仅凭一分钟录音,就能训练出高度还原自己音色的“数字分身”——这正是GPT-SoVITS带…

作者头像 李华
网站建设 2026/3/19 14:17:53

语音合成与大模型融合:GPT-SoVITS在LLM生态中的角色定位

语音合成与大模型融合:GPT-SoVITS在LLM生态中的角色定位 在AI助手越来越“能说会道”的今天,我们或许已经习惯了Siri、小爱同学或ChatGPT的文字回应。但真正让人感到亲切的,不是它说了什么,而是——它是“谁”在说话。 当大语言模…

作者头像 李华
网站建设 2026/3/16 1:32:57

GPT-SoVITS模型蒸馏实验:小型化版本是否保持原有质量?

GPT-SoVITS模型蒸馏实验:小型化版本是否保持原有质量? 在虚拟主播直播间里,一个仅用58秒语音训练出的“数字人声”正流畅地朗读英文科技新闻,语调自然、重音准确,甚至在中英混杂的句子间无缝切换。这背后,正…

作者头像 李华
网站建设 2026/3/21 3:53:54

GPT-SoVITS技术亮点解析:为何它能实现高保真音色还原?

GPT-SoVITS技术亮点解析:为何它能实现高保真音色还原? 在AI语音逐渐渗透进日常生活的今天,我们早已不满足于“会说话”的机器。无论是智能助手、有声书朗读,还是短视频配音,用户期待的是听得清、辨得准、像真人的声音—…

作者头像 李华
网站建设 2026/3/21 23:28:50

超详细版Keil4安装教程(含驱动配置)

Keil4 安装与驱动配置全攻略:从零搭建嵌入式开发环境你有没有遇到过这种情况?刚下载好 Keil4,兴冲冲地打开准备写代码,结果编译报错、设备不识别、ST-Link连不上……折腾半天也没搞定。别急,这几乎是每个嵌入式新手都会…

作者头像 李华
网站建设 2026/3/15 19:18:25

GPT-SoVITS用户反馈精选:实际使用者的真实评价汇总

GPT-SoVITS用户反馈精选:实际使用者的真实评价汇总 在短视频创作、有声书生产乃至虚拟偶像运营日益火热的今天,一个共同的痛点浮现出来:如何快速获得既自然又个性化的语音内容?传统配音依赖专业录音,成本高、周期长&am…

作者头像 李华