为了账号安全,请及时绑定邮箱和手机立即绑定

PyTorch:简单的前馈神经网络在没有retain_graph=True的情况下无法运行

PyTorch:简单的前馈神经网络在没有retain_graph=True的情况下无法运行

手掌心 2022-08-16 18:33:56
下面是我用于训练前馈神经网络 (FFNN) 的代码。标签是介于 0 和 50 之间的数字。FFNN由具有50个神经元的单个隐藏层和具有51个神经元的输出层组成。此外,我还使用了负对数似然损失。我对PyTorch很陌生,所以我使用几个网站作为指导。奇怪的是,它们都不需要retain_graph设置为 True(它们在调用时不会传递任何参数)。此外,它运行得非常慢,精度似乎在固定值附近波动,而不是降低。backward()假设输入的格式是正确的,有人可以向我解释为什么网络表现如此糟糕,以及为什么网络需要将retain_graph设置为True?谢谢!n_epochs = 2batch_size = 100for epoch in range(n_epochs):    permutation = torch.randperm(training_set.size()[0])    for i in range(0, training_set.size()[0], batch_size):        opt.zero_grad()        indices = permutation[i:i + batch_size]        batch_features = training_set[indices]        batch_labels = torch.LongTensor([label for label, sent in train[indices]])        batch_outputs = model(batch_features)        loss = loss_function(batch_outputs, batch_labels)        loss.backward(retain_graph=True)        opt.step()
查看完整描述

1 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

您缺少操作。将其添加到循环中,您的代码将在没有 的情况下正常工作。.zero_grad()retain_graph= True


loss.backward()

opt.step()

opt.zero_grad()


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信