下面是我用于训练前馈神经网络 (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()
添加回答
举报
0/150
提交
取消