开始使用免费开始使用

LSTM 网络

您已经知道,普通的 RNN 单元在实际中用得并不多。更常用、且能更好处理长序列的替代方案是长短期记忆(Long Short-Term Memory,LSTM)单元。本练习中,您将亲手构建一个 LSTM 网络!

与之前构建的 RNN 网络相比,最重要的实现差异在于:LSTM 具有两个隐藏状态,而不是一个。这意味着您需要额外初始化这个隐藏状态,并将其传入 LSTM 单元。

torchtorch.nn 已为您导入,请开始编码!

本练习是课程的一部分

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
编辑并运行代码