Pytorch之Softmax多分类任务

本文介绍了如何使用PyTorch实现Softmax回归,并应用于FashionMNIST数据集的多分类任务。内容涵盖数据集加载、softmax计算、交叉熵损失、准确率计算及模型训练,详细讲解了每个步骤的实现方法和代码示例。
摘要由CSDN通过智能技术生成

上一篇文章中,笔者介绍了什么是Softmax回归及其原理。因此在接下来的这篇文章中,我们就来开始动手实现一下Softmax回归,并且最后要完成利用Softmax模型对Fashion MINIST进行分类的任务。在开始实现Softmax之前,我们先来了解一下Fashion MINIST这一数据集。

1 数据集

1.1 FashionMNIST

数据集FashionMNIST虽然名字里面有’MNIST’这个词,但是其与手写体识别一点关系也没有,仅仅只是因为FashionMNIST数据集在数据集规模、类别数量和图片大小上与MINIST手写体数据集一致。

图 1. Fashion MINIST数据集

如图1所示便为Fashion MNIST数据集的部分可视化结果,其包含有训练集6万张和测试集1万张,每张图片的大小为[28,28]。在Pytorch中,我们可以通过如下代码对其进行载入:

def load_dataset():
    mnist_train = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', 	train=True, download=True,transform=transforms.ToTensor())
    mnist_test = torchvision.datasets.FashionMNIST(root='~/Datasets/FashionMNIST', 		train=False, download=True,transform=transforms.ToTensor())
    return mnist_train, mnist_test

其中参数root表示指定数据集的保存目录;train表示返回训练集还是测试集;download表示数据集不存在时是否需要下载;transform表示指定一种转换方法,而指定transforms.ToTensor()就是将尺寸为(H x W x C)且数据位于[0,255]的PIL图片或者数据类型为np.unit8的numpy数组转换为尺寸为(C x H x W)且数据类型为torch.float32,范围在 [ 0.0 , 1.0 ] [0.0,1.0] [0.0,1.0]Tensor

同时,我们还可以通过代码image= mnist_train[0][0]label=mnist_train[0][1]来分别访问一张图片和其对应的标签值。

1.2 构造数据集

在模型实际训练过程中,数据读取经常是训练的性能瓶颈。同时,为了能够更好的训练模型我们通常会对数据进行打乱,以及分批(batch)的将数据输入的模型中。在Pytorch中,我们可以通过DataLoader这个类来方便的完成上述功能。

start = time.time()
train_iter = torch.utils.data.DataLoader(mnist_test, batch_size=1024, shuffle=True, num_workers=2)
for x_test, y_test in train_iter:
    print(x_test.shape)
    print('%.2f sec' % (time.time() - start))

#结果
torch.Size([1024, 1, 28, 28])
torch.Size([1024, 1, 28, 28])
torch.Size([1024, 1, 28, 28])
torch.Size([1024, 1, 28, 28])
torch.Size([1024
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值