Вы объяснили структуру своего ввода, но вы не установили связь между вашими входными размерами и ожидаемыми входными размерами LSTM.
Давайте разберем ваш вход (присвоение имен измерениям):
batch_size
: 12 seq_len
: 384 input_size
/ num_features
: 768
Это означает, что input_size
LSTM должно быть 768.
hidden_size
не зависит от вашего ввода, а скорее от того, сколько функций должен создать LSTM, который затем также используется для скрытого состояния в качестве вывода, поскольку это последнее скрытое состояние. Вы должны решить, сколько функций вы хотите использовать для LSTM.
Наконец, для формы ввода, настройка batch_first=True
требует, чтобы ввод имел форму [batch_size, seq_len, input_size]
, в вашем случае это будет [12, 384, 768]
.
import torch
import torch.nn as nn
# Size: [batch_size, seq_len, input_size]
input = torch.randn(12, 384, 768)
lstm = nn.LSTM(input_size=768, hidden_size=512, batch_first=True)
output, _ = lstm(input)
output.size() # => torch.Size([12, 384, 512])