下面是我用于訓練前饋神經(jīng)網(wǎng)絡(luò) (FFNN) 的代碼。標簽是介于 0 和 50 之間的數(shù)字。FFNN由具有50個神經(jīng)元的單個隱藏層和具有51個神經(jīng)元的輸出層組成。此外,我還使用了負對數(shù)似然損失。我對PyTorch很陌生,所以我使用幾個網(wǎng)站作為指導。奇怪的是,它們都不需要retain_graph設(shè)置為 True(它們在調(diào)用時不會傳遞任何參數(shù))。此外,它運行得非常慢,精度似乎在固定值附近波動,而不是降低。backward()假設(shè)輸入的格式是正確的,有人可以向我解釋為什么網(wǎng)絡(luò)表現(xiàn)如此糟糕,以及為什么網(wǎng)絡(luò)需要將retain_graph設(shè)置為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條經(jīng)驗 獲得超5個贊
您缺少操作。將其添加到循環(huán)中,您的代碼將在沒有 的情況下正常工作。.zero_grad()retain_graph= True
loss.backward()
opt.step()
opt.zero_grad()
添加回答
舉報
0/150
提交
取消