Когда я расширяю ваш код до полного примера - я также добавил несколько комментариев, которые могут помочь - я получаю следующее:
import torch
import torch.nn as nn
input_size = 5
hidden_size = 10
num_layers = 1
output_size = 1
lstm = nn.LSTM(input_size, hidden_size, num_layers)
fc = nn.Linear(hidden_size, output_size)
X = [
[[1,2,3,4,5]],
[[1,2,3,4,5]],
[[1,2,3,4,5]],
[[1,2,3,4,5]],
[[1,2,3,4,5]],
[[1,2,3,4,5]],
[[1,2,3,4,5]],
]
X = torch.tensor(X, dtype=torch.float32)
print(X.shape) # (seq_len, batch_size, input_size) = (7, 1, 5)
out, hidden = lstm(X) # Where X's shape is ([7,1,5])
print(out.shape) # (seq_len, batch_size, hidden_size) = (7, 1, 10)
out = out[-1] # Get output of last step
print(out.shape) # (batch, hidden_size) = (1, 10)
out = fc(out) # Push through linear layer
print(out.shape) # (batch_size, output_size) = (1, 1)
Это имеет смысл для меня, учитывая ваши batch_size = 1
иoutput_size = 1
(я полагаю, вы делаете регресс).Я не знаю, откуда ваш output.shape = (7, 1)
.
Вы уверены, что ваш X
имеет правильные размеры?Вы создали nn.LSTM
возможно с batch_first=True
?Есть много мелочей, которые могут проникнуть внутрь.