从零实现简易神经网络时训练while循环陷入无限循环问题求助
无限循环问题解决
核心错误原因
你的训练循环中迭代计数器更新语法错误:你写的是itera=+1,该语句的作用是每次循环都将itera的值赋值为1,itera永远无法达到1000,因此会一直满足itera<1000的循环条件,陷入无限循环。
将该语句修改为itera += 1即可解决无限循环问题,修改后的训练循环代码如下:
#training while itera<1000: outputs=forw(inputs) e=error(targets,outputs) w1=back(e) itera += 1
其他需要提前修正的代码问题
解决循环问题后,你还需要处理以下逻辑错误才能得到正确训练结果:
- 样本和标签长度不匹配:你定义的
inputs只有3个输入样本,targets写了4个标签值,计算误差时zip会自动截断到较短的长度,丢失第4个标签,需要根据你的任务需求对齐两者长度。 - 反向传播规则错误:当前的权重更新逻辑不符合梯度下降的正确推导,纯线性激活的回归任务权重更新梯度需要结合输入特征计算,你当前直接用误差乘学习率更新权重的逻辑是错误的,可在解决循环问题后优先调整这部分。
内容的提问来源于stack exchange,提问作者Regina Briseño
相关产品推荐
相关产品推荐

