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

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


标签是介于 0 和 50 之间的数字。FFNN由具有50个神经元的单个隐藏层和具有51个神经元的输出层组成。此外,我还使用了负对数似然损失。


我对PyTorch很陌生,所以我使用几个网站作为指导。奇怪的是,它们都不需要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()


手掌心
浏览 119回答 1
1回答

江户川乱折腾

您缺少操作。将其添加到循环中,您的代码将在没有 的情况下正常工作。.zero_grad()retain_graph= Trueloss.backward()opt.step()opt.zero_grad()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python