大家好~我开设了“深度学习基础班”的线上课程,带领同学从0开始学习全连接和卷积神经网络,进行数学推导,并且实现可以运行的Demo程序
线上课程资料:
本节课录像回放
加QQ群,获得ppt等资料,与群主交流讨论:106047770
本系列文章为线上课程的复盘,每上完一节课就会同步发布对应的文章
本文为第五节课:“用全连接层识别手写数字(中)”的复盘文章
本课程系列文章可进入索引查看:
深度学习基础课系列文章索引
主问题:如何使训练收敛?
- 如何找到未收敛的原因?
答:通过打印(log)来调试,打印一些重要的值 - 打印哪些值?
答:前向传播的输入输出;
后向传播的输入输出;
更新后的权重矩阵。
任务:找到未收敛的原因并修复
- 请通过打印的方法调试,找到异常的数据?
答:使用Log.res模块的log和printForDebug函数来打印,找到了下面的异常数据:
1.前向传播的输出中,隐藏层和输出层的输出向量的值都几乎为1。
进一步发现:它们的加权和都比较大,其中隐藏层的加权和基本上都是50几,输出层的加权和基本上都是10几。
2.后向传播的输出中,隐藏层和输出层的梯度都很小 - 原因是什么?如何修复?
答: 对于第1个异常数据,原因是隐藏层的输入向量的个数(784)和输出层的输入向量的个数(30)都很多,导致加权和过大,从而导致sigmoid激活函数的返回接近1
对于第2个异常数据,原因是:sigmoid激活函数的返回接近1->激活函数的导数接近0->梯度很小
另外因为损失函数变化了,所以在后向传播中计算输出层的误差项时, \(\frac{
标签:加权,修复,输出,代码,学习,用全,基础课,手写,收敛 From: https://www.cnblogs.com/chaogex/p/16905389.html