手写体数字分类模型

目录

一、 目的... 1

1.1 输入与输出.... 1

1.2 隐藏层设计.... 1

1.3 激活函数与损失函数.... 1

二、 训练... 2

2.1 数据生成.... 2

2.2 训练过程.... 2

2.3 训练参数与设置.... 2

三、 测试与分析... 3

3.1     性能对比.... 3

3.2     训练过程差异.... 3

四、 代码... 4

 

 

 

  • 目的

通在手写体数字分类任务中,MNIST(Mixed National Institute of Standards and Technology)数据集被广泛用于评估不同的机器学习和深度学习模型。此实验旨在通过使用全连接神经网络(FCNet)与卷积神经网络(LeNet)对比手写体数字的分类性能。我们将通过训练和测试两种模型,分析其在准确率、运算量以及训练过程中的表现差异。

1.1 输入与输出

本实验中的神经网络模型的输入层接收28x28的灰度图像数据,使用随机梯度下降(SGD)优化器进行训练。为了加速训练,我们将学习率设置为0.05,并使用动量(momentum)来防止梯度更新的震荡,经过若干隐藏层的处理后,输出10个神经元的向量,每个神经元表示一个数字类别的概率。输出层使用Softmax激活函数,将网络的输出转化为概率分布,用于进行类别预测。

1.2 隐藏层设计

  1. FCNet

FCNet模型是一种简单的全连接网络,它包含三个主要的全连接层。由于图像数据通常具有较强的空间结构特征,FCNet通过将每一层的神经元与上一层所有神经元相连接的方式进行分类。在FCNet中,输入的28x28像素图像在进入神经网络之前会被展平为一维向量,然后通过多个全连接层进行处理。

  1. LeNet

LeNet是卷积神经网络(CNN)的经典模型之一,专为手写数字识别设计。LeNet模型通过卷积层提取图像的局部特征,并通过池化层减少数据的尺寸,增强模型的泛化能力。与FCNet不同,LeNet保留了图像的空间结构,通过卷积操作可以有效捕捉图像中的边缘、纹理等局部特征。

1.3 激活函数与损失函数

    1. 激活函数选择

在本实验中,我们选择使用了 ReLU 激活函数。ReLU(Rectified Linear Unit,线性整流单元)是深度学习中常用的激活函数,其输出为输入值本身(如果大于零),否则输出为零。与传统的 Sigmoid 或 Tanh 函数相比,ReLU 在处理深层网络时能够有效缓解梯度消失问题,使得网络能够更快速地训练并收敛。尤其是在我们的全连接神经网络(FCNet)中,ReLU 激活函数为每一层提供了足够的非线性表达能力,使得网络能够更好地学习和拟合复杂的模式。

对于 LeNet 网络中的卷积层,ReLU 同样被用于激活卷积输出,进一步增强了网络的非线性特征。相比于 Sigmoid 函数的输出范围局限性,ReLU 的“零化”特性使得神经网络在训练时更具稳定性和高效性。

    1. 损失函数选择

在本实验中,我们采用了 均方误差损失函数(MSE Loss) 来优化模型。均方误差损失函数衡量了模型输出与目标标签之间的平方差,并通过最小化这一差异来更新模型参数。具体来说,我们将真实标签转换为 One-Hot 编码,然后计算输出概率与 One-Hot 编码标签之间的 MSE。

这种损失函数在多类分类任务中也能有效使用,尤其是在标签较为简单且非概率化的情况下。虽然交叉熵损失函数(Cross-Entropy Loss)常用于分类任务中的 Softmax 输出,但在这个实验中,由于我们使用了 One-Hot 编码,MSE 损失同样能够提供精确的反馈,帮助模型逐步减少预测误差并提升分类准确度。

  • 训练

2.1 数据生成

MNIST数据集(图 1)通过PyTorch的torchvision库进行加载,并对数据进行了标准化处理。具体来说,数据的像素值被归一化。这有助于加速神经网络的训练并提高性能。

手写体数字分类模型_第1张图片

图 1MNIST数据集提取成功展示

 

2.2 训练过程

训练过程通过迭代多个epoch来优化网络参数。在每个epoch中,训练数据分成多个批次(batch),每个批次的数据经过神经网络进行前向传播,计算出预测结果后与真实标签计算损失。随后,损失通过反向传播进行梯度计算,并使用优化器更新网络权重。训练过程持续进行,直到达到预定的训练次数。

2.3 训练参数与设置

训练过程中使用的主要参数如下:

学习率

0.05

训练轮次

10轮

损失函数

均方误差(MSE)损失函数

优化器

SGD,带动量(momentum=0.9)

  • 测试与分析
  1. 性能对比

通过对比FCNet与LeNet的训练和测试准确率,我们发现LeNet表现出色。FCNet由于缺乏图像的空间结构处理能力,导致其在分类任务中的表现较弱,训练过程中,FCNet的准确率较慢提升,最终准确率约为9

你可能感兴趣的:(深度学习,分类,数据挖掘,人工智能)