I am trying to regress one dependent y from 114 independents x at each time step like below digram.
The problem here is this model can't learn any this about y. There is clearly period T in y.
Is it because of the input sequence I use is T so that model only see one period each forward and backward calculation?
Maybe lstm not suitable for this regression? I tried pls which demonstrate there is period info in x.
My code is :
class LSTM(nn.Module):
def __init__(self, input_size=114, hidden_size=200, output_size=1):
super().__init__()
self.hidden_size = hidden_size
self.lstm = nn.LSTM(input_size, hidden_size,num_layer)
self.linear = nn.Linear(hidden_size, output_size)
self.hidden_cell = (torch.zeros(num_layer,1,self.hidden_size),torch.zeros(num_layer,1,self.hidden_size))
self.relu = nn.ReLU()
def forward(self, input_seq):
outputs, self.hidden_cell = self.lstm(input_seq, self.hidden_cell)
predictions = self.relu(self.linear(outputs.squeeze()))
return predictions
model = LSTM()
loss_function = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
epochs = 100
for epoch in range(epochs):
model.train()
loss = 0
#model.hidden_cell = (torch.zeros(1, 1, model.hidden_size), torch.zeros(1, 1, model.hidden_size))
for trial in range(trials):
input=np.transpose(train[trial,:,:],(1,0)).unsqueeze(1) # torch.Size([299, 1, 114])
target=targets[trial,:]
model.hidden_cell = (torch.zeros(num_layer, 1, model.hidden_size),torch.zeros(num_layer, 1, model.hidden_size))
y_hat=model(input)
loss = loss_function(y_hat.squeeze(), target)
optimizer.zero_grad()
loss.backward()
optimizer.step()
model.eval()
with torch.no_grad():
y_test_predict = model(test.unsqueeze(1))
losst = loss_function(y_test_predict.squeeze(), test_target)
#print(f'epoch: {epoch:3} loss: {loss.item():10.8f}, test loss: {losst.item():10.8f}')
print(f'epoch: {epoch:3} loss: {loss.item():10.8f}, test loss: {losst.item():10.8f}')```
question from:
https://stackoverflow.com/questions/65885799/why-lstm-fail-me-on-this-time-series-regression-problem 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…