Pytorch LSTM eğitim değil
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
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.