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

Python实现XOR神经网络训练终止条件异常问题排查

问题排查与解决
  • 核心错误:条件判断逻辑完全颠倒
    你的需求是「训练误差高于0.3时持续训练」,也就是只有当所有样本的误差都低于0.3(或整体误差达标)时才停止训练。但你写的if (error < 0.3).any(): break意思是「只要有任意一个样本的误差小于0.3,就立刻停止训练」——这和需求完全相反。初始迭代时,哪怕只有一个样本的误差碰巧低于0.3,程序就会直接终止,这就是只迭代一次就停的原因。

  • 正确的条件写法
    根据需求,应该调整判断逻辑:

    1. 基于单个样本误差判断(所有样本误差都达标才停止):
      if (error < 0.3).all(): break
      
      用.all()替代.any(),表示所有样本的误差都小于0.3时才终止训练。
    2. 基于整体平均误差判断(更合理,避免单个样本偶然达标导致提前停止):
      if error.mean() < 0.3: break
      
      计算所有样本误差的平均值,当平均值低于0.3时停止训练。
  • 额外建议

    • 初始权重随机情况下,第一次迭代误差波动可能较大,建议同时设置最大迭代次数(比如max_epochs = 10000),防止陷入无限循环。
    • 平方损失配合sigmoid激活易出现梯度消失问题,若训练效率低,可尝试调整学习率,或换成交叉熵损失(更适配分类任务)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:30:57