PyTorch深度学习实战_【美】伊莱·史蒂文斯;【意】卢卡·安蒂加;【德】托马斯·菲曼_AZW3_MOBI_EPUB_PDF_电子书(无页码)_【美】伊莱·史蒂文斯;【意】卢卡·安蒂加;【德】托马斯·菲曼
内容节选
第3章从张量开始 本章主要内容 ・理解张量,它是PyTorch中基本的数据结构。 ・张量的索引与运算。 ・与NumPy多维数组交互操作。 ・将计算移动到GPU以提高速度。 在第2章中,我们介绍了深度学习支持的一些应用程序。它们总是以某种形式获取数据,如图像或文本数据,并以另一种形式生成数据,如标签、数字或更多的图像或文本。从这个角度来看,深度学习实际上需要构建一个能够将数据从一种表示转换为另一种表示的系统。这种转换是通过从论证所需映射的一系列样本中提取共性来驱动的,例如,系统可能会记录狗的一般形状和金毛猎犬的典型颜色。通过结合这2种图像属性,系统可以正确地将具有给定形状和颜色的图像映射到金毛猎犬标签上,而不是将图像映射成一只黑色的狗或是黄褐色的公猫。由此构成的系统可以接收大量类似的输入,并为这些输入产生有意义的输出。 这个过程从将我们的输入转换为浮点数开始,我们将在第4章中介绍图像像素到数字的转换,以及许多其他类型的数据,就像我们在图3.1的第1步看到的那样。但在此之前,在本章中,我们将学习如何使用张量来处理PyTorch中的所有浮点数。 3.1 实际数据转为浮点数 由于浮点数是网络处理信息的方式,因此我们需要一种方法,将我们希望处理的真实世界的数据编码为网络可理解的数据,然后将输出解码为我们可以理解和使用的数据。 深度神经网络通常在不同阶段学习将数据从一种形式转换为另一种形式,这意味着每个阶段转换的数据可以被认为是一个中间表征序列。对于图像识别,早期表征可以是诸如边缘检测或某些纹理,如皮毛。更深层次的表征可以捕捉更复杂的结构,如耳朵、鼻子或眼睛等。 一般来说,这些中间表征是浮点数的集合,它们描述输入的特征,并以一种有助于描述输入映射到神经网络输出的方式捕获数据的结构。这些描述是针对当前任务的,是从相关的例子中学习到的。这些浮点数的集合以及它们的操作是现代AI的核心,在本书中会看到几个这样的例子。 图3.1 深度神经网络学习将输入表征转换为输出表征(注:神经元和输出数量并没有按比例计算) 请记住,这些中间表征是将输入与前一层神经元的权重结合的结果,如图3.1所示的第2步。每个中间表征对之前的输入都是唯一的。 开始将数据转换为浮点数输入之前,我们必须先对PyTorch如何处理和存储数据有深入的理解,诸如如何将数据处理作为输入、中间表征和输出。本章将详细讨论这一点。 为此,PyTorch引入了一种基本的数据结构:张量。在第2章中,当我们对预先训练好的网络进行推理时,已经碰到了张量。对于那些数学、物理或工程出身的人来说,张量这个术语会与空间、参考系统以及它们之间的转换的概念捆绑在一起。不管怎样,这些概念在这里都不适用。在深度学习中,张量可以将向量和矩阵推广到任意维度,如图3.2所示。这个概念的另一个名称是多维数组,张量的维度与用来表示张量中标量值的索引数量一致。 图3.2 张量是PyTorch中用来表示数据的构建块 PyTorch并不是处理多维数组的唯一库。到目前为止,NumPy是最受欢迎的多维数组库,可以说它已成为数据科学的通用语言。PyTorch具有与NumPy无缝互操作的特性,这使得它能够与Python中的其他科学库(如SciPy、scikit-learn以及pandas等)进行最优的集成。 与NumPy数组相比,PyTorch张量具有一些“超能力”,如在GPU上执行非常快的操作、在多个设备或机器上进行分布式操作以及跟踪创建它们的计算图。在实现现代深度学习库时,这些都是重要的特性。 本章我们将从介绍PyTorch张量开始,覆盖基础知识,以便为本书剩余部分的内容做好准备。首先,我们将学习使用PyTorch张量库来操作张量。这包括如何将数据存储在内存中,如何在常量时间内对任意大张量执行某些操作,以及前面提到的NumPy互操作和GPU加速。如果要使张量成为我们编程工具箱中的重要工具,那么理解张量的功能和API是很重要的。在第4章中,我们将充分利用这些知识,并学习用神经网络学习的方式表示几种不同类型的数据。 3.2 张量:多维数组 我们已经知道张量是PyTorch中基本的数据结构。张量是一个数组,也就是一种数据结构,它存储了一组数字,这些数字可以用一个索引单独访问,也可以用多个索引访问。 3.2.1 从Python列表到PyTorch张量 让我们看看列表索引的作用,这样我们就可以将其与张量索引进行比较。让我们看看Python中由3个数字组成的列表,源代码见code/p1ch3/1_tensors.ipynb,代码片段如下:# In[1]:a = [1.0, 2.0, 1.0] 我们可以使用对应的从0开始的索引来访问列表的第1个元素:# In[2]:a[0]# Out[2]:1.0# In[3]:a[2] = 3.0a# Out[3]:......
- 信息
- 声明
- 内容提要
- 关于作者与译者
- 关于封面插图
- 译者序
- 序
- 前言
- 致谢
- 关于本书
- 资源与支持
- 第1部分 PyTorch核心
- 第1章 深度学习和PyTorch库简介
- 第2章 预训练网络
- 第3章 从张量开始
- 第4章 使用张量表征真实数据
- 第5章 学习的机制
- 第6章 使用神经网络拟合数据
- 第7章 区分鸟和飞机:从图像学习
- 第8章 使用卷积进行泛化
- 第2部分 从现实世界的图像中学习:肺癌的早期检测
- 第9章 使用PyTorch来检测癌症
- 第10章 将数据源组合成统一的数据集
- 第11章 训练分类模型以检测可疑肿瘤
- 第12章 通过指标和数据增强来提升训练
- 第13章 利用分割法寻找可疑结节
- 第14章 端到端的结节分析及下一步的方向
- 第3部分 部署
- 第15章 部署到生产环境