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

完全相同的Python神经网络代码运行结果差异巨大排查

问题原因

两份代码的核心逻辑并不一致,你的手写代码存在一处Python缩进错误,和VS Code编辑器无关,这是准确率异常的根本原因。

你的代码中feedforward前向传播方法的实现存在缩进问题:

def feedforward(self, a):
    for b, w in zip(self.biases, self.weights):
        a = sigmoid(np.dot(w, a)+b)
        return a

return a被错误缩进放在了for循环内部,代码执行时只会完成第一层(输入层到隐藏层)的计算,拿到30维的隐藏层输出就直接返回,根本不会执行后续隐藏层到输出层的计算,相当于你实际运行的是一个截断的残缺网络。此时对30维的隐藏层输出取argmax得到的索引范围是029,而测试集标签范围是09,自然匹配率极低,刚好落在你观察到的单epoch50~450正确数的区间。

官方源码的对应实现缩进是正确的:

def feedforward(self, a):
    for b, w in zip(self.biases, self.weights):
        a = sigmoid(np.dot(w, a)+b)
    return a

return a和for循环保持同级,会等所有网络层的前向计算全部完成后,才返回10维的输出层结果,网络结构完整,因此能达到8000~9500的正常识别准确率。

修复方案

将你手写代码中feedforward方法里的return a语句向外缩进一层,和for循环对齐,修改后重新运行即可得到和官方源码一致的效果。

额外提示

你使用的文本对比工具没有检出这个问题,是因为没有严格校验缩进级别。Python是强制缩进的语言,同一行代码缩进位置不同,执行逻辑会有本质区别,缩进错误是Python开发中非常常见的低级问题,排查代码逻辑问题时需要优先检查缩进是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:48:17