您当前拥有以下代码:

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]);

```