返回介绍

快速搭建法

发布于 2025-05-02 13:36:24 字数 1943 浏览 0 评论 0 收藏

作者: Morvan 编辑: Morvan

Torch 中提供了很多方便的途径,同样是神经网络,能快则快,我们看看如何用更简单的方式搭建同样的回归神经网络。

本节内容包括:

快速搭建

我们先看看之前写神经网络时用到的步骤. 我们用 net1 代表这种方式搭建的神经网络。

class Net(torch.nn.Module):
    def __init__(self, n_feature, n_hidden, n_output):
        super(Net, self).__init__()
        self.hidden = torch.nn.Linear(n_feature, n_hidden)
        self.predict = torch.nn.Linear(n_hidden, n_output)

    def forward(self, x):
        x = F.relu(self.hidden(x))
        x = self.predict(x)
        return x

net1 = Net(1, 10, 1)   # 这是我们用这种方式搭建的 net1

我们用 class 继承了一个 torch 中的神经网络结构,然后对其进行了修改,不过还有更快的一招,用一句话就概括了上面所有的内容!

net2 = torch.nn.Sequential(
    torch.nn.Linear(1, 10),
    torch.nn.ReLU(),
    torch.nn.Linear(10, 1)
)

我们再对比一下两者的结构:

print(net1)
"""
Net (
  (hidden): Linear (1 -> 10)
  (predict): Linear (10 -> 1)
)
"""
print(net2)
"""
Sequential (
  (0): Linear (1 -> 10)
  (1): ReLU ()
  (2): Linear (10 -> 1)
)
"""

我们会发现 net2 多显示了一些内容,这是为什么呢? 原来他把激励函数也一同纳入进去了,但是 net1 中,激励函数实际上是在 forward() 功能中才被调用的. 这也就说明了,相比 net2 , net1 的好处就是,你可以根据你的个人需要更加个性化你自己的前向传播过程,比如(RNN). 不过如果你不需要七七八八的过程,相信 net2 这种形式更适合你。

所以这也就是在我 github 代码 中的每一步的意义啦。

如果你觉得这篇文章或视频对你的学习很有帮助,请你也分享它,让它能再次帮助到更多的需要学习的人。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。