最近看到一篇极视角转的文章算法推导核心!一次性梳理清楚,是时候搞定矩阵求导了!,想到前不久面试爱奇艺的时候一面的小哥一直让我手推全连接的公式推导,以及用Python+Numpy将过程实现,感觉自己对深度学习核心之一的矩阵求导并不是很熟悉(对链式法则更熟悉的是单元素标量的求导),为此写下这篇作为后续工作的笔记之用,也供需要的小伙伴查询。
前向传播
代码大部分参考Python——numpy实现简单BP神经网络识别手写数字,将batch从1设置为64,以符合一般意义的做法。
该网络只有两层,维度为
的输入层
和维度为
的输出层
,中间为全连接,网络定义为:
nn = NeuralNetwork([784, 10]) # 神经网络各层神经元个数
维度为
的权重矩阵
和维度为
的偏差矩阵
对应的代码:
for i in range(1, len(layers)):# 正态分布初始化
self.weights.append(np.