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

第 9 章 荒野中的 PyTorch 野生 PyTorch

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

在最后一章,我们将看看其他人和公司是如何使用 PyTorch 的。你还会学到一些新技术,包括调整图片大小、生成文本以及创建可以骗过神经网络的图像。与之前的章节略有不同的是,我们将集中讨论如何使用现有的库来启动和运行,而不是从头开始学习 PyTorch。我希望这将成为进一步探索的跳板。

首先,让我们来看看从数据中获取最大收益的一些最新方法。

数据增强:混合与平滑

早在第 4 章中,我们就研究了增强数据的各种方法,以帮助减少模型在训练数据集上的过拟合。用更少的数据做更多事情的能力自然是 Deep Learning 研究的一个高活跃度领域,在本节中,我们将介绍两种日益流行的从数据中榨取最后一滴信号的方法。这两种方法也将改变我们计算损失函数的方式,因此这将是对我们刚刚创建的更灵活的训练循环的一次很好的测试。

混合

mixup是一种引人入胜的增强技术,它源于我们对模型功能的错误理解。我们对模型的通常理解是,我们向它发送一张如图 9-1所示的图像,并希望模型返回该图像是一只狐狸的结果。

A fox
图 9-1. 一只狐狸

但正如你所知道的,我们从模型中得到的不仅仅是这个结果;我们得到的是一个包含所有可能类别的张量,并且希望该张量中值最大的元素是狐狸类别。事实上,在理想情况下,我们会得到一个除了狐狸类中的 1 之外全部为 0 的张量。

但神经网络很难做到这一点!总是会存在不确定性,而我们的激活函数(如softmax )很难让张量达到 1 或 0。mixup 利用了这一点,提出了一个问题:图 9-2 的类是什么?

A mixture of cat and fox
图 9-2. 猫和狐狸的混合体

在我们看来,这可能有点乱,但其中 60% 是猫,40% 是狐狸。如果我们不试图让我们的模型做出明确的猜测,而是让它针对两个类别呢?这将意味着我们的输出张量在训练中不会遇到接近但永远不会达到 1 的问题,而且我们可以改变每张混合图像的不同比例,从而提高模型的泛化能力。

但是,我们如何计算这种混合图像的损失函数呢?好吧,如果p是第一幅图像在混合图像中所占的百分比,那么我们就有了以下简单的线性组合:

p * loss(image1) + (1-p) * loss(image2)

它必须预测这些图像,对吗?而我们需要根据这些图像在最终混合图像中的比例进行缩放,因此这个新的损失函数似乎是合理的。要选择p,我们可以使用从正态分布或均匀分布中抽取的随机数,就像我们在许多其他情况下所做的那样。不过,混合论文的作者认为,从贝塔分布中抽取的样本在实践中效果更好。1不知道贝塔分布是什么样的吗?在看到这篇论文之前,我也不知道!图 9-3给出了论文中描述的特征。

Beta Distribution where ⍺ = β
图 9-3. ...
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