Skip to Content
为深度学习编程 PyTorch
book

为深度学习编程 PyTorch

by Ian Pointer
July 2025
Intermediate to advanced
220 pages
3h
Chinese
O'Reilly Media, Inc.
Book available
Content preview from 为深度学习编程 PyTorch

第 3 章 卷积神经网络 卷积神经网络

本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com

在尝试了第 2 章中的全连接神经网络后,你可能会注意到一些问题。如果你试图添加更多层或大幅增加参数数量,你几乎肯定会耗尽 GPU 上的内存。此外,要花费一段时间才能训练出稍微像样的准确率,即便如此也没什么值得称道的,尤其是考虑到围绕 Deep Learning 的炒作。Go 到底是怎么回事?

的确,一个全连接或(前馈)网络可以发挥通用近似器的功能,但理论上并没有说你需要花多长时间来训练它成为你真正追求的函数的那个近似器。但我们可以做得更好,尤其是在处理图像时。在本章中,你将了解卷积神经网络(CNN),以及它们如何构成当今最准确的图像分类器的骨干(我们将对其中几种进行详细介绍)。我们将为 "鱼与猫 "应用建立一个新的基于卷积的架构,并证明它比上一章的训练更快更准确。让我们开始吧!

我们的第一个卷积模型

这次,我将先分享最终的模型架构,然后再讨论所有新的部分。而且正如我在第 2 章中提到的,我们创建的训练方法与模型无关,所以你可以先去测试一下这个模型,然后再来听讲解!

class CNNNet(nn.Module):

    def __init__(self, num_classes=2):
        super(CNNNet, self).__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 64, kernel_size=11, stride=4, padding=2),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(64, 192, kernel_size=5, padding=2),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=3, stride=2),
            nn.Conv2d(192, 384, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.Conv2d(384, 256, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.Conv2d(256, 256, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=3, stride=2),
        )
        self.avgpool = nn.AdaptiveAvgPool2d((6, 6))
        self.classifier = nn.Sequential(
            nn.Dropout(),
            nn.Linear(256 * 6 * 6, 4096),
            nn.ReLU(),
            nn.Dropout(),
            nn.Linear(4096, 4096),
            nn.ReLU(),
            nn.Linear(4096, num_classes)
        )

    def forward(self, x):
      x = self.features(x)
      x = self.avgpool(x)
      x = torch.flatten(x, 1)
      x = self.classifier(x)
      return x

首先要注意的是nn.Sequential() 的使用。这样我们就可以创建一个层链。当我们在forward() 中使用其中一个链时,输入会依次经过层数组的每个元素。您可以利用这一点将模型分解成更合理的排列。在这个 Network+ ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

产品路线图全面升级

产品路线图全面升级

C. Todd Lombardo, Bruce McCarthy, Evan Ryan, Michael Connors
超越Vibe编程

超越Vibe编程

Addy Osmani

Publisher Resources

ISBN: 9798341662902Supplemental Content