您当前拥有以下代码:
delta3 = a3 - y(i); % (1×1)
delta2 = Theta2' * delta3 .* a2 .* (1 - a2); % (9×1).*(1×9) = (9×9)
Delta2 += delta3 * a2'; % (9×9)* (9×1) = (9×1)
Delta1 += delta2 * a1'; % (9×9)* (n×1) = (9×1)
我想应该是这样的:
```matlab
delta3 = a3 - y(i); % (1×1)
delta2 = Theta2 * delta3 .* a2 .* (1 - a2); % (1×9).*(1×9) = (1×9)
Delta2 += delta3 * a2'; % (9×9)* (9×1) = (9×1)
Delta1 += delta2.' * a1; % (9×1)* (1×9) = (9×9)
```
然后在每一步中丢弃Delta1中的偏差梯度,最终得到一个(8×9)矩阵作为您正在进行的Delta1分量。(您可能需要先转置Delta1,我没有密切关注您的换位)。最后,最后的垂直连接步骤的要点是将矩阵“内爆”回single-column长的向量形式,以便它们遵循与输入“thetaVec”相同的“规范”,因此您可以使用(8×9)和(1×9)Delta1和Delta2对象,并“内爆”它们,即: [Delta1
```matlab
[Delta1, ~] = infite([Delta1, ~], [8, 9]);
[Delta2, ~] = infite([Delta2, ~], [8, 9]);
```