เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

โครงข่าย LSTM

อย่างที่ทราบกันดีอยู่แล้ว RNN cell แบบธรรมดานั้นไม่ค่อยได้ใช้งานจริงมากนัก ทางเลือกที่นิยมกว่าและจัดการกับลำดับข้อมูลยาว ๆ ได้ดีกว่าอย่างชัดเจน คือ Long Short-Term Memory cell หรือ LSTM ในแบบฝึกหัดนี้ จะได้ลองสร้างโครงข่าย LSTM ด้วยตัวเอง!

ความแตกต่างที่สำคัญที่สุดในการ implement เมื่อเทียบกับโครงข่าย RNN ที่เคยสร้างไปก่อนหน้า คือ LSTM มี hidden state สองตัวแทนที่จะเป็นตัวเดียว ดังนั้นจึงต้องกำหนดค่าเริ่มต้นให้กับ hidden state เพิ่มเติมนี้ด้วย และส่งผ่านไปยัง LSTM cell

torch และ torch.nn ได้ถูก import ให้แล้ว เริ่มเขียนโค้ดได้เลย!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Learning ระดับกลางด้วย PyTorch

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ใน method .__init__() ให้กำหนด LSTM layer และกำหนดให้กับ self.lstm
  • ใน method forward() ให้กำหนดค่าเริ่มต้นของ hidden state หน่วยความจำระยะยาวตัวแรก c0 ด้วยค่าศูนย์
  • ใน method forward() ให้ส่ง input ทั้งสามตัวไปยัง layer LSTM ได้แก่ input ของ time step ปัจจุบัน และ tuple ที่บรรจุ hidden state ทั้งสองตัว

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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
แก้ไขและรันโค้ด