MNIST的手写数字识别

本文介绍了使用三层神经网络识别MNIST手写数字的实现过程,包括数据集介绍、网络结构设计(输入层、两个隐藏层、输出层)、激活函数选择(tanh)、损失函数(MSE+正则化项)、网络参数更新方法以及原始数据的预处理策略。通过调整学习率、正则化系数和批处理大小,达到了较好的分类效果。

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

MNIST的手写数字识别

  1. 数据集

    • 传统的手写数字的数据集MNIST(http://yann.lecun.com/exdb/mnist/
    • 训练集为60000图片,图片像素为28*28。Images文件中存储图片,label文件中存储对应的数字
    • 测试集为10000图片,格式一致
      这里写图片描述
  2. 网络结构设计

    ​ 网络结构为三层神经网络,包括一个输入层,一个输出层,两个隐藏层。输入层为图片的向量形式,长度为784,即输入层包括784个神经元。两个隐藏层的个数分别为200和50。输出层的神经元个数为10个。预测结果从10个神经元的输出中选择最大值所在的位置作为结果。

  3. 激活函数的选择

    激活函数选择tanh。该函数的特点:

    • 输出在(-1,1)之间,并且在这个范围内tanh的变化最为剧烈,能够很好的将最小的差异变大,从而提高分类准确性

    • 对于三层网络,使用tanh能够保证最后一层的结果的范围仍然较大,而不会被缩减为很小的一个区间。(sigmoid在测试中出现了这样的问题)

    • 表达式

      tanh(z) =exp(z)exp(z)exp(z) +exp(x)= 2δ(2z)1(δsigmoid)tanh(z)=1(exp(z)exp(z)exp(z) +exp(x))2=1tanh2(z) t a n h ( z )   = e x p ( z ) − e x p ( − z ) e x p ( z )   + e x p ( − x ) =   2 δ ( 2 z ) − 1 ( δ s i g m o i d ) t a n h ′ ( z ) = 1 − ( e x p ( z ) − e x p ( − z ) e x p ( z )   + e x p ( − x ) ) 2 = 1 − t a n h 2 ( z )

    • 函数和导数图像
      这里写图片描述

  4. 损失函数的选择

    使用MSE作为最后的误差函数,同时增加了正则化项,减少网络中的参数W的值,具体的公式为

    J(W,B)=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值