You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

吴恩达机器学习课程神经网络代价函数for循环实现结果异常

问题根因

你的计算逻辑没有问题:逐个计算每个训练样本对应所有类别的交叉熵损失,再把所有损失求和后除以样本数,完全符合二分类交叉熵拓展到多分类场景的计算规则。

你得到错误代价值的原因是代码存在笔误:
在遍历样本的for循环中,你获取当前样本标签的代码写为:

class = y(m);

这里你固定读取了第m个(也就是全部训练样本里的最后一个)的标签,没有跟随循环变量i更新,所有样本的真实标签y_i都和最后一个样本的标签一致,自然会得到远高于预期的损失值。

修复方法

把上述代码行修改为:

class = y(i);

修改后重新运行即可得到预期的0.287629的代价结果。

补充注意事项

  • 后续补充正则化项时,注意不要将偏置单元对应的权重纳入正则求和范围
  • 如果你后续继续用循环实现反向传播梯度计算,注意每个样本的误差项梯度要先累加,最终再除以样本数m,同时补充正则对应的梯度部分

内容的提问来源于stack exchange,提问作者dumjo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 02:54:04