Jaringan LSTM
Seperti yang sudah Anda ketahui, sel RNN biasa tidak terlalu sering digunakan dalam praktik. Alternatif yang lebih sering dipakai dan jauh lebih baik dalam menangani urutan panjang adalah Long Short-Term Memory (LSTM). Pada latihan ini, Anda akan membangun jaringan LSTM sendiri!
Perbedaan implementasi terpenting dibandingkan jaringan RNN yang Anda buat sebelumnya berasal dari fakta bahwa LSTM memiliki dua status tersembunyi, bukan satu. Artinya, Anda perlu menginisialisasi status tersembunyi tambahan ini dan meneruskannya ke sel LSTM.
torch dan torch.nn sudah diimpor untuk Anda, jadi mulailah menulis kode!
Latihan ini adalah bagian dari kursus
Deep Learning Lanjutan dengan PyTorch
Petunjuk latihan
- Di metode
.__init__(), definisikan sebuah layer LSTM dan tetapkan keself.lstm. - Di metode
forward(), inisialisasi status tersembunyi memori jangka panjang pertamac0dengan nol. - Di metode
forward(), teruskan ketiga masukan ke layerLSTM: masukan pada langkah waktu saat ini, serta sebuah tuple yang berisi dua status tersembunyi.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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