主旨
索引
动机
在自己编程实现神经 络的过程中,最大的困难在于如何检查实现结果是否正确。单纯的Code Review显然无法有效发现所有Bug,从 上也没有查到公开的测试用例,因此只能自己想办法。
从软件工程的角度,测试用例需要清晰的定义出程序的输入和预期输出。进一步,为了方便Debug,仅仅知道输入和预期输出还不够,还需要运算中重要中间结果量,以便程序输出结果与预期不符时,通过检查不同阶段的中间变量定位出问题的Root Cause。
基于上述考虑,我想到了通过电子表格计算出神经 络前向和反向的每一步结果,一方面可以作为自己写的神经 络程序的单元测试例;另一方面也在计算的过程中更加形象的理解神经 络。
实现方法
1. 络结构
我们定义一个包含一个输入层、一个输出层,一个隐层的神经 络,每一层包含2个节点, 络结构为全连接 络,激活函数为sigmoid函数。
在Excel中我用如下格式描述这个 络,表格里src表示源节点,dst表示目标节点,src和dst交叉位置的系数就是这条边的权重,bias节点与dst节点的交叉位置表示dst节点的bias偏置量
3. 计算Loss
根据前述教材,选用如下函数作为损失函数
表格中计算公式如下
基于逐点误差,可以进一步算出梯度表格
Excel文件下载地址
文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34263 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!