1. Learn
  2. /
  3. 课程
  4. /
  5. PyTorch 深度学习进阶

Connected

道练习

PyTorch 模型

您将使用面向对象编程(OOP)方式来定义模型结构。回顾一下,这需要先建立一个模型类,并在其中定义两个方法:

  • .__init__():在这里定义将要使用的各层;

  • forward():在这里定义模型接收输入后会发生什么;也就是将输入依次传过预先定义的各层。

我们来构建一个包含 3 个线性层且使用 ReLU 激活的模型。在最后一个线性层之后,需要改用 sigmoid 激活,这非常适合我们这样的二分类任务(预测饮用水可饮用性)。下面是使用 nn.Sequential() 定义的等价模型,您可能更熟悉这种写法:

net = nn.Sequential(
  nn.Linear(9, 16),
  nn.ReLU(),
  nn.Linear(16, 8),
  nn.ReLU(),
  nn.Linear(8, 1),
  nn.Sigmoid(),
)

现在,让我们把这个模型改写成一个类!

说明

100 XP
  • 在 .__init__() 方法中,按照给定的模型定义设置 3 个线性层的维度,并分别赋给 self.fc1、self.fc2 和 self.fc3。
  • 在 forward() 方法中,将模型输入 x 依次传过所有层,并为它们添加相应的激活函数,方式与第一层中已有的做法类似。