type
Page
status
Invisible
date
Mar 2, 2026
slug
summary
动手深度学习v2课程
tags
机器学习
深度学习
category
icon
password
为了和之前softmax实现的结果相比较,这里继续使用Fashion-MNIST图像分类数据集。
4.2.1. 初始化模型参数
Fashion-MNIST中的每个图像由个灰度像素值组成。所有图像共分为10个类别。 忽略像素之间的空间结构,我们可以将每个图像视为具有784个输入特征和10个类的简单分类数据集。首先,我们将实现一个具有单隐藏层的多层感知机,它包含256个隐藏单元。注意,我们可以将这两个变量都视为超参数。通常,我们选择2的若干次幂作为层的宽度。因为内存在硬件中的分配和寻址方式,这么做往往可以在计算上更高效。
我们用几个张量来表示我们的参数。注意,对于每一层我们都要记录一个权重矩阵和一个偏置向量。跟以前一样,我们要为loss关于这些参数的梯度分配内存。
4.2.2. 激活函数
为了增加理解,这里手动实现激活函数,而不是调用内置的激活relu函数。
4.2.3. 模型
由于忽略了空间结构,因此使用reshape将二维图像转化为一个长度为
num_inputs的向量。4.2.4. 损失函数
由于我们已经从零实现过softmax函数(3.6节),因此在这里我们直接使用高级API中的内置函数来计算softmax和交叉熵损失。
4.2.5. 训练
层感知机的训练过程与softmax回归的训练过程完全相同。可以直接调用
d2l包的train_ch3函数(参见3.6节),将迭代周期数设置为10,并将学习率设置为0.1。为了评估刚才完成训练的模型,将在一些测试数据上应用该模型。
调用的对应函数没有存到库里,把下面的代码写入到
torch.py文件中,然后重启jupyter调用即可4.2.6. 小结
- 手动实现一个简单的多层感知机是很容易的。然而如果有大量的层,从零开始实现多层感知机会变得很麻烦(例如,要命名和记录模型的参数)。
