Я начал работать с pytorch и использовал несколько преобразований для построения следующей модели, используя в качестве справки одно из руководств:
model = torch.nn.Sequential(
torch.nn.Linear(D_in, H),
torch.nn.ReLU(),
torch.nn.Linear(H, D_out),
)
Я хочу использовать сеть LSTM, поэтому я попыталсявыполните следующее:
model = torch.nn.Sequential(
torch.nn.LSTM(D_in, H),
torch.nn.Linear(H, D_out)
)
, что дает мне эту ошибку:
RuntimeError: вход должен иметь 3 измерения, получил 2
Почему явидя эту ошибку?Я предполагаю, что в моем понимании того, как преобразования (сети?) Могут быть связаны цепью в pytorch ...
РЕДАКТИРОВАТЬ
После следования предложению @ esBee яобнаружил, что следующий работает правильно.Это связано с тем, что LSTM ожидает, что вход имеет следующий размер:
вход формы (seq_len, batch, input_size): тензор, содержащий функции входной последовательности.Входными данными также может быть упакованная последовательность переменной длины
local_x = local_x.unsqueeze(0)
y_pred, (hn, cn) = layerA(local_x)
y_pred = y_pred.squeeze(0)
y_pred = layerB(y_pred)
Однако тот факт, что мой исходный набор данных обучения / тестирования имеет только длину последовательности 1, заставляет меня чувствовать, что я что-то делаю неправильно.Какова цель этого параметра в контексте нейронных сетей?