开始使用免费开始使用

初始化与激活函数

不稳定梯度(梯度消失或爆炸)是训练深层神经网络时常见的挑战。在本题及接下来的练习中,您将扩展此前为饮用水可饮用性分类任务构建的模型结构,使其更能抵御这些问题。

第一步,使用 He(Kaiming)初始化策略来改进权重初始化。为此,您需要从 torch.nn.init 模块调用合适的初始化器,该模块已作为 init 导入。接着,您还将把激活函数从默认的 ReLU 更新为通常效果更好的 ELU。

本练习是课程的一部分

PyTorch 深度学习进阶

查看课程

练习说明

  • 对第二层 fc2 的权重属性调用 He(Kaiming)初始化,与 fc1 的用法相同。
  • 对第三层 fc3 的权重属性调用 He(Kaiming)初始化,并考虑最后一层所用激活函数不同的情况。
  • forward() 方法中将激活函数由 relu 更新为 elu

交互式实操练习

通过完成这段示例代码来试试这个练习。

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(9, 16)
        self.fc2 = nn.Linear(16, 8)
        self.fc3 = nn.Linear(8, 1)
        
        # Apply He initialization
        init.kaiming_uniform_(self.fc1.weight)
        ____(____)
        ____(____, ____)

    def forward(self, x):
        # Update ReLU activation to ELU
        x = nn.functional.relu(self.fc1(x))
        x = nn.functional.relu(self.fc2(x))
        x = nn.functional.sigmoid(self.fc3(x))
        return x
编辑并运行代码