深度学习基础课:用全连接层识别手写数字(上)

大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序

线上课程资料:
本节课录像回放

加QQ群,获得ppt等资料,与群主交流讨论:106047770

本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章

本文为第五节课:“用全连接层识别手写数字(上)”的复盘文章

本课程系列文章可进入索引查看:
深度学习基础课系列文章索引

为什么要学习本课

  • 如何用全连接层识别下面的手写数字?
    image

回顾相关课程内容

  • 第三节课:全连接层的前向和后向传播推导
    • 全连接层的网络结构是什么?
    • 如何实现前向传播?
    • 如何实现后向传播?
    • 如何实现训练?
    • 如何使用全连接层实现“判断性别Demo”?

主问题:输入是什么?

  • 输入层的输入数据是什么?
    答:手写数字图片的像素的亮度值
  • 如何处理输入数据?
    • 把整个手写数字图片作为输入数据会有什么问题?
      答:
      输出不确定;
      单个样本的像素太多,造成输入层神经元过多,训练不容易收敛;
      变化太多了(每个数字一变,整个样本就变了),训练不容易收敛;
    • 如何解决该问题?
      答:拆分成每个数字一张图片:
      image

主问题:输出是什么?

  • 需要的输出数据是什么?
    答:一个数字,范围为0-9
  • 如何设计输出层的输出数据?
    答:输出层输出10个数字,数字的范围为[0.0,1.0]
  • 如何确定输出的是哪个数字?
    答:最大的数字的序号,即为输出的数字

主问题:网络结构是什么?

  • 已知每个数字图片的像素数量为28*28=784,那么输入层节点数(神经元的个数)是多少?
    答:784
  • 输出层节点数是多少?
    答:10
  • 我们使用1层隐藏层
  • 隐藏层节点数是多少?
    答:下图为一些估计公式,我们使用第一个公式来估计,取30
    image

主问题:如何判断训练是否收敛?

  • 我们之前是如何判断的?
    答:判断loss是否接近0
  • 现在还行得通吗?
    • 损失函数需要改变吗?
      image
      答:需要
    • 如何改变?
      答:改变后的损失函数公式为: \( e=\frac{1}{n}\sum_{i=1}^n (\left\vert \overrightarrow{y_{真实}} - \overrightarrow{y_{输出}} \right\vert)^2 \)
  • 除了判断误差的方法,还有其它的方法来判断是否收敛吗?
    答:判断正确率

任务:实现训练

posted @ 2022-11-15 05:20  杨元超  阅读(78)  评论(0编辑  收藏  举报