【发布时间】:2017-08-02 22:17:35
【问题描述】:
我一直在努力提高对反向传播的熟练程度,并且已经了解了执行此操作的标准数学公式。我实施了一个似乎可以正常工作的解决方案(并通过了相关的测试并取得了优异的成绩)。
但是......实际的解决方案(在 MATLAB 中实现,并使用矢量化)在两个重要方面与公式不一致。
公式如下:
delta-layer2 = (Theta-layer2 transpose) x delta-layer3 dot x gprime(-- 现在不重要)
工作代码如下所示:
% d3 is delta3, d2 is delta2, Theta2 is minus the bias column
% dimensions: d3--[5000x10], d2--[5000x25], Theta2--[10x25]
d3 = (a3 - y2);
d2 = (d3 * Theta2) .* gPrime(z2);
我无法用数学公式来协调我的实现,主要有两点:
- 工作代码反转表达式第一部分中的术语;
- 工作代码不会转置 Theta-layer2,但公式会。
这怎么可能?各个矩阵的维度似乎不允许任何其他工作组合。
乔什
【问题讨论】:
-
它可能仅取决于设置,两种实现如何定义矩阵。请注意,您不能使用给定的尺寸执行
Theta2.' * d2。 -
哦,我注意到了。这就是促使我首先发布这个问题的原因。
标签: matlab machine-learning backpropagation