基于Pytorch深度学习——Softmax回归

本文介绍了使用PyTorch实现Softmax回归在手写数字识别中的应用,详细解释了代码中的关键概念如batch_size、模型参数初始化、softmax函数、交叉熵损失函数以及随机梯度下降优化。通过逐行解读代码和小实验,帮助读者掌握深度学习中的这些核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章来源于对李沐动手深度学习代码以及原理的理解,并且由于李沐老师的代码能力很强,以及视频中讲解代码的部分较少,所以这里将代码进行尽量逐行详细解释
并且由于pytorch的语法有些小伙伴可能并不熟悉,所以我们会采用逐行解释+小实验的方式来给大家解释代码

大家都知道二分类问题我们在机器学习里面使用到的是逻辑回归这个算法,但是针对于多分类问题,我们常用的是Softmax技术,大家不要被这个名字给迷惑了,softmax回归并不是一种回归技术,而是一种分类技术

tips:本文需要下载d2l包,大家可以按照下面的指令安装

pip install -U d2l

导入模块

import torch
from IPython import display
from d2l import torch as d2l

这里如果存在报错的话,可以自己pip install对应的模块,如果还出现了其他问题,可以在评论区中问出来

导入数据集

这里我们使用的是手写数字识别分类数据集mnist,李沐老师在d2l包李沐已经帮我们写好了下载并且导入这个数据集的函数,我们只需要指定batch_size,然后再导入对应的模块即可

batch_size = 256
train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)

这个代码里面load_data_fashion_mnist返回的是两个迭代器,如果对迭代器并不是特别了解的同学,可以先去看看python基础课

batch_size

相信初学者们肯定对batch_size这个这个超参数感到非常的疑惑(超参数这个名词我们在以后的文章也会解释到)。
batch_size的官方定义是深度学习模型在训练过程中一次性输入给模型的样本数量,因为深度学习通常使用的样本都是上万的数据量,如果一口气全部给模型进行训练或者推理,那么GPU/CPU肯定会吃不消,所以我们通常会分批次将数据输入给模型
当然有关于如何选择batch_size的问题也是一个值得探究的问题,一般而言,如果你的CPU/GPU的内存比较小的话,建议选择比较小的batch_size,如果你的内存比较大的话,可以选择较大的batch_size,较大的batch_size可以加快你的训练速度

初始化模型参数

在我们导入的数据集中,每个样本都是 28 × 28 28 \times 28 28×28的图像,但是在我们一般的处理中,我们会选择将展平每个图像,把它们看作长度为784的向量。
需要我们注意的是Softmax回归,我们的输出与输入的类别的数目是一样多的
因此,权重将构成一个 784 × 10 784 \times 10 784×10的矩阵,偏置将构成一个 1 × 10 1 \times 10 1×10的行向量。
于是我们可以得到下面的矩阵计算公式
X 1 × 784 × W 784 × 10 + b 1 × 10 = Y 1 × 10 (1.1) X_{1 \times 784} \times W_{784 ×10} + b_{1×10}= Y_{1×10} \tag{1.1} X1×784×W784×10+b1×10=Y1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值