本文Udacity上深度基石项目的一个作业的笔记.由于反向传播中矩阵计算设计到下标的配合。因此,作如下笔记用于回顾总结。
注:所有 ∑ 相乘的公式均可以使用
np.dot()
来实现。
下面是作业中误差反向传播的一段代码,用python
来实现。其中的hidden_errors
是wjk和
δk
是使用 np.dot()
相乘以的结果。而hidden_grad
则是对
f(hj)
的求导结果,如下的实现是sigmoid的求导结果。
最后,根据矩阵规则,将两者的乘积得到
w
的更新结果。
# TODO: Backpropagated error
hidden_errors = np.dot(self.weights_hidden_to_output.T, output_errors)
hidden_grad = hidden_outputs * (1 - hidden_outputs)
self.weights_hidden_to_output += self.lr*np.dot(output_errors,hidden_outputs.T)
self.weights_input_to_hidden += self.lr*np.dot((hidden_errors * hidden_grad), inputs.T)