PyTorch训练ANN时损失函数恒定不变的问题求助
损失函数始终不变的原因分析
训练人工神经网络时损失全程固定,核心原因是优化器未执行参数更新操作。
你的代码中,训练循环的最后一行存在语法错误:
optimizer.step
这只是引用了优化器的step方法对象,并没有实际调用它。必须加上括号optimizer.step(),才能触发优化器根据反向传播得到的梯度更新模型权重。
因为权重参数在整个训练过程中完全没有变化,每次前向传播计算的损失值自然完全一致。
修正后的训练循环代码如下:
epoch=100 losses=[] for i in range(epoch): y_pred=model.forward(X_train) loss=criterion(y_pred,y_train) losses.append(loss.item()) if i%10==0: print(f'epoch{i} and loss is :{loss}') optimizer.zero_grad() loss.backward() # 修正:调用step方法更新参数 optimizer.step()
额外检查项:
- 确认
iris.csv加载正常,target列是正确的分类标签(0、1、2) - 数据转换为张量的步骤无误,
X_train、y_train的格式符合模型输入要求
内容的提问来源于stack exchange,提问作者Kalyan
相关产品推荐
相关产品推荐

