Pytorch LSTM eğitim değil

Sep 22 2020

Bu yüzden şu anda Pytorch üzerinde bir LSTM uygulamaya çalışıyorum, ancak bazı nedenlerden dolayı kayıp azalmıyor. İşte benim ağım:

class MyNN(nn.Module):
    def __init__(self, input_size=3, seq_len=107, pred_len=68, hidden_size=50, num_layers=1, dropout=0.2):
        super().__init__()
        
        self.pred_len = pred_len
        
        self.rnn = nn.LSTM(
            input_size=input_size, 
            hidden_size=hidden_size, 
            num_layers=num_layers, 
            dropout=dropout, 
            bidirectional=True,
            batch_first=True
        )
        
        self.linear = nn.Linear(hidden_size*2, 5)
    
    def forward(self, X):
        lstm_output, (hidden_state, cell_state) = self.rnn(X)
        
        labels = self.linear(lstm_output[:, :self.pred_len, :])
        
        return lstm_output, labels

Ve eğitim döngüm

LEARNING_RATE = 1e-2


net = MyNN(num_layers=1, dropout=0)

compute_loss = nn.MSELoss()

optimizer = optim.Adam(net.parameters(), lr=LEARNING_RATE)


all_loss = []
for data in tqdm(list(train_loader)):
    X, y = data
    
    optimizer.zero_grad()

    lstm_output, output = net(X.float())
    
    # Computing the loss
    loss = compute_loss(y, output)
    all_loss.append(loss)
    loss.backward()
    
    optimizer.step()
    
# Plot
plt.plot(all_loss, marker=".")
plt.xlabel("Epoch")
plt.xlabel("Loss")
plt.show()

Ve bu benim sahip olduğum şey

Neyi yanlış yaptığımı aramaya çalışıyorum ama hiçbir fikrim yok. Ayrıca, bir keras LSTM kullanmadan önce ve veri setinde iyi çalıştı.

Herhangi bir yardım? Teşekkürler!

Yanıtlar

1 YuseqYaseq Sep 22 2020 at 20:10

Her partide kayba bakarsınız. Kaybınızı tüm gruplar üzerinden ortalamalısınız. Farklı partilere baktığınızda, kaybınız artabilir çünkü bir partinin tahmin edilmesi diğerinden daha zordur. Bu yüzden gerçekten yorumlanamaz. Öyleyse bununla başlayın. Sorun devam ederse, muhtemelen patlayan eğimlerdir. Bu durumda sizin öğrenme oranını düşürmek 1e-3veya 1e-4hatta daha az eğer devam ederse.