本科毕业 做网站编辑,上海短期网站建设培训,山东网站备案号,ui培训班 千锋图像分类数据集
学习目标
通过本课程#xff0c;学员将了解到Fashion-MNIST是一个服装分类数据集。具体来说#xff0c;学员会学习到Fashion-MNIST是一个服装分类数据集由10个类别的图像组成、数据迭代器是获得更高性能的关键组件、依靠实现良好的数据迭代器、利用高性能计算…图像分类数据集学习目标通过本课程学员将了解到Fashion-MNIST是一个服装分类数据集。具体来说学员会学习到Fashion-MNIST是一个服装分类数据集由10个类别的图像组成、数据迭代器是获得更高性能的关键组件、依靠实现良好的数据迭代器、利用高性能计算来避免减慢训练过程等重要概念。相关知识点Fashion-MNIST数据集学习内容1 Fashion-MNIST数据集MNIST数据集是图像分类中广泛使用的数据集之一但作为基准数据集过于简单。我们将使用类似但更复杂的Fashion-MNIST数据集。pip install d2l1.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使得所有像素的数值均在01之间transtransforms.ToTensor()mnist_traintorchvision.datasets.FashionMNIST(root./data,trainTrue,transformtrans,downloadFalse)mnist_testtorchvision.datasets.FashionMNIST(root./data,trainFalse,transformtrans,downloadFalse)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].shapeFashion-MNIST中包含的10个类别分别为t-shirtT恤、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,titlesNone,scale1.5):#save绘制图像列表figsize(num_cols*scale,num_rows*scale)_,axesd2l.plt.subplots(num_rows,num_cols,figsizefigsize)axesaxes.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,ynext(iter(data.DataLoader(mnist_train,batch_size18)))show_images(X.reshape(18,28,28),2,9,titlesget_fashion_mnist_labels(y));1.2 读取小批量为了使我们在读取训练集和测试集时更容易我们使用内置的数据迭代器而不是从零开始创建。回顾一下在每次迭代中数据加载器每次都会读取一小批量数据大小为batch_size。通过内置数据迭代器我们可以随机打乱了所有样本从而无偏见地读取小批量。batch_size256defget_dataloader_workers():#save使用4个进程来读取数据return4train_iterdata.DataLoader(mnist_train,batch_size,shuffleTrue,num_workersget_dataloader_workers())我们看一下读取训练数据所需的时间。timerd2l.Timer()forX,yintrain_iter:continuef{timer.stop():.2f}secout3.24 sec1.3 整合所有组件现在我们定义load_data_fashion_mnist函数用于获取和读取Fashion-MNIST数据集。这个函数返回训练集和验证集的数据迭代器。此外这个函数还接受一个可选参数resize用来将图像大小调整为另一种形状。defload_data_fashion_mnist(batch_size,resizeNone):#save下载Fashion-MNIST数据集然后将其加载到内存中trans[transforms.ToTensor()]ifresize:trans.insert(0,transforms.Resize(resize))transtransforms.Compose(trans)mnist_traintorchvision.datasets.FashionMNIST(root./data,trainTrue,transformtrans,downloadFalse)mnist_testtorchvision.datasets.FashionMNIST(root./data,trainFalse,transformtrans,downloadFalse)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_iterload_data_fashion_mnist(32,resize64)forX,yintrain_iter:print(X.shape,X.dtype,y.shape,y.dtype)breakOuttorch.Size([32, 1, 64, 64]) torch.float32 torch.Size([32]) torch.int64