Deep-Learning-with-PyTorch

Deep-Learning-with-PyTorch-3.1 以

2020-09-15  本文已影响0人  追求科技的足球

3.1 以浮点数表示的世界

由于浮点数是网络处理信息的方式,因此我们需要将要处理的那种真实世界的数据编码成可被网络消化的东西,然后将输出解码回我们可以理解并用于我们目的的东西。


图3.1 深度神经网络学习如何将输入表示转换为输出表示。 (注意:神经元和输出的数量不成比例。)

深度神经网络通常会分阶段学习从一种数据形式到另一种形式的转换,这意味着每个阶段之间的部分转换后的数据都可以视为一系列中间表示。 对于图像识别,早期的表示形式可以是诸如边缘检测之类的东西,也可以是诸如毛皮之类的某些纹理。更深的表示形式可以捕获更复杂的结构,例如耳朵,鼻子或眼睛。

通常,此类中间表示形式是浮点数的集合,这些浮点数表征输入并以有助于描述输入如何映射到神经网络的输出的方式捕获数据的结构。 这种表征特定于手头的任务,可以从相关示例中学习。 这些浮点数的集合及其操作是现代AI的核心-我们将在整本书中看到几个这样的示例。

请务必记住,这些中间表示(如图3.1第二步所示)是将输入与前一层神经元的权重相结合的结果。 每个中间表示对于之前的输入都是唯一的。

在开始将数据转换为浮点输入的过程之前,我们首先必须对PyTorch如何处理和存储数据(作为输入,作为中间表示和作为输出)有深刻的了解。 本章将专门讨论这一点。

为此,PyTorch引入了一个基本的数据结构:张量。 当我们对预训练的网络进行推断时,我们已经在第2章中遇到了张量。 对于那些来自数学,物理学或工程学的人来说,张量一词与空间,参考系统以及它们之间的转换的概念捆绑在一起。 无论好坏,这些概念在这里均不适用。 在深度学习的上下文中,张量是指向量和矩阵对任意数量维的泛化,如图3.2所示。 相同概念的另一个名称是多维数组。 张量的维数与张量中用于引用标量值的索引数一致。


图3.2 张量是在PyTorch中表示数据的基础

PyTorch不是唯一处理多维数组的库。 NumPy是迄今为止最受欢迎的多维数组库,以至于它现在可以说已经成为数据科学的通用语言。 PyTorch具有与NumPy的无缝互操作性,与NumPy进行了一流的集成,可与Python中的其他科学库(例如SciPy(www.scipy.org),Scikit-learn(https://scikit-learn.org))和Pandas(https://pandas.pydata.org)进行一流的集成。

与NumPy数组相比,PyTorch张量具有一些超能力,例如能够在图形处理单元(GPU)上执行非常快速的操作,在多个设备或机器上分配操作以及跟踪创建它们的计算图的能力。 这些都是实施现代深度学习库时的重要功能。

在本章中,我们将介绍PyTorch张量,其中涵盖了基础知识,以便在本书的其余部分中为我们的工作提供动力。 首先,我们将学习如何使用PyTorch张量库操纵张量。 这包括诸如如何将数据存储在内存中,如何在恒定时间内在任意大张量上执行某些操作以及上述NumPy互操作性和GPU加速之类的事情。 要使张量成为我们编程工具箱中的首选工具,了解张量的功能和API很重要。 在下一章中,我们将充分利用这些知识,并学习如何以能够通过神经网络进行学习的方式表示几种不同的数据。

上一篇 下一篇

猜你喜欢

热点阅读