PyTorch:简单的前馈神经网络不是 运行 没有 retain_graph=True

PyTorch: Simple feedforward neural network not running without retain_graph=True

下面是我训练前馈神经网络 (FFNN) 的代码。

标签是 0 到 50 之间的数字。FFNN 由一个包含 50 个神经元的隐藏层和一个包含 51 个神经元的输出层组成。此外,我使用了负对数似然损失。

我是 PyTorch 的新手,所以我使用了几个网站作为指导。奇怪的是,其中 none 需要将 retain_graph 设置为 True(它们在调用 backward() 时不传递任何参数)。此外,它运行非常缓慢,准确度似乎在固定值附近波动而不是降低。

假设输入的格式是正确的,有人可以向我解释为什么网络表现如此糟糕以及为什么网络需要 retain_graph 设置为 True 吗?

非常感谢!

n_epochs = 2
batch_size = 100
for 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()

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

loss.backward()
opt.step()
opt.zero_grad()