ПочатиПочніть безкоштовно

Мережа LSTM

Як ви вже знаєте, звичайні осередки RNN рідко використовують на практиці. Частіше застосовують Long Short-Term Memory, або LSTM, які набагато краще працюють із довгими послідовностями. У цій вправі ви самостійно збудуєте мережу LSTM!

Найважливіша відмінність у реалізації порівняно з RNN, яку ви створили раніше, полягає в тому, що LSTM має два, а не один прихований стани. Отже, вам потрібно ініціалізувати додатковий прихований стан і передати його до осередку LSTM.

torch і torch.nn уже імпортовано, тож почнімо кодувати!

Ця вправа є частиною курсу

Середній рівень Deep Learning з PyTorch

Переглянути курс

Інструкції до вправи

  • У методі .__init__() оголосіть шар LSTM і присвойте його до self.lstm.
  • У методі forward() ініціалізуйте перший прихований стан довготривалої пам'яті c0 нулями.
  • У методі forward() передайте до шару LSTM усі три вхідні значення: вхід для поточного кроку часу та кортеж із двох прихованих станів.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

class Net(nn.Module):
    def __init__(self, input_size):
        super().__init__()
        # Define lstm layer
        ____ = ____(
            input_size=1,
            hidden_size=32,
            num_layers=2,
            batch_first=True,
        )
        self.fc = nn.Linear(32, 1)

    def forward(self, x):
        h0 = torch.zeros(2, x.size(0), 32)
        # Initialize long-term memory
        c0 = ____
        # Pass all inputs to lstm layer
        out, _ = ____
        out = self.fc(out[:, -1, :])
        return out
Редагувати та запускати код