
一、代码的结构解析代码逻辑非常清晰完全按照深度学习的标准流程走数据加载 - 定义模型 - 训练 - 测试。1. 1数据集加载与预处理首先导入代码所用到的相关模块1.2 加载与预处理数据集代码rootdata是数据存放路径trainTrue是加载训练集transformToTensor()是将图片转换为pytorch能够处理的张量并进行归一化。1.3搭建神经网络这是一种三层全连接神经网络MLPnn.Flatten()(展平层)MNIST 的原始图片是一个二维的 28×28 的像素矩阵。但全连接神经网络不认识二维数组它只认一维的向量。所以第一件事就是把这 784 个像素点“拉直”变成一个长度为 784 的一维向量。这就是28*28的由来。nn.Linear(28*28,128)(第一层全连接层):1.4训练与优化损失函数nn.CrossEntroyLoss()交叉熵损失非常适合多分类任务。优化器torch.optim.SGD随机梯度下降。训练循环将数据搬到GPU上X.to(device))进行前向传播计算预测值计算损失清空梯度反向传播更新权重。添加打印语句每隔 100 个 batch 打印一次当前的 Loss方便观察训练是否收敛。二、训练结果我设置了epochs 10使用 SGD 优化器学习率为 0.01。虽然只是个极其简单的网络但在 MNIST 上的表现很稳定随着训练轮数增加Loss值不断下降最终的测试集准确率具体取决于激活函数和超参数。三、优化建议激活函数的选择代码里用的是torch.sigmoid。在深层网络中sigmoid容易导致梯度消失。如果你想让模型学得更快强烈建议换成torch.relu(ReLU激活函数收敛速度会显著提升。