当前位置: 首页 > 网络应用技术

Pytorch学习系列教程:什么是张量?

时间:2023-03-08 11:03:02 网络应用技术

  简介:本文继续pytorch学习系列教程,介绍了深度学习中最基本和最关键的数据结构。一方面,张量就像阵列或dataframe to pandas一样,就像阵列或dataframe。.today,本文介绍了张量的数据结构。

  作为张量的介绍,本文主要讨论了三个主要的“哲学”问题:什么是张量?如何创建张量?张量的特征是什么?

  什么是张量?张量的英语原始含义是张量,以下是在Pytorch的官方网站上介绍的:

  换句话说,张量是包含单个数据类型的高维矩阵。简而言之,张量实际上与numpy中的数组相同。通常以三维和上方的矩阵描述。例如,下图显示:单个元素称为scarar,序列称为向量,而由多个序列组成的称为矩阵的平面为(矩阵),由多个平面组成的立方体称为张量。该矩阵具有一个维矩阵和两个维矩阵甚至多维矩阵,张力并不严格限制在三维数量以上。在深度学习类别中,量表,向量和矩阵共同称为张力。

  任何熟悉机器学习的人都知道,监视机学习模型的标准输入通常是由由多个功能组成的输入矩阵组成的标签向量(当标签也可以是两个维度的矩阵时两个维矩阵),而来自Sklearn的Sklearn是商定的规范是训练数据集(x,y),其中资本x表示两个维矩阵,小写y表示标签是一个二维矢量矢量。

  实际上,这是由于应用方向的实际需求。深度学习中最成熟的两个应用程序是简历和NLP的两个主要领域。神经网络和循环水神经网络是核心基本模块。在这两个应用程序中,标准输入数据集至少三个维度为:例如:

  它得出了这些应用程序的需求,因此深度学习模型的输入数据结构通常需要3个以上的维度,这也直接促进了张量的外观。Furthermore,Tensor并不是Pytorch的唯一定义,而是广泛使用的数据结构在许多深度学习框架中。例如,TensorFlow是一个生动地添加到框架名称中的张量。

  同样:Pytorch中的张量是深度学习中广泛使用的数据结构。它本质上是一个高维矩阵,理解numpy中的促销和升级并不是夸张的。支持深度学习模型和培训。

  如前所述,什么是张量,然后您需要了解如何创建张量。从总体上讲,有三种方法来创建张量:有三种方法:有三种方法:

  当然,这可能是可以在计算机程序中创建的三种通用方法。例如,这通常是基于数组的数字创建的这三种方法。

  让我们依次介绍它。

  这可能是实际应用中最常用的形式,例如从列表中读取数据,从numpy数组中读取数据,然后生成新的张量。为了实现这一目标,有两种常用的方法:

  没错,两者之间的区别是前者使用张量函数(t是小写),后者使用张量类(t是资本)。当然,两者之间存在一些差异,例如默认数据类型,支持可行性和创建张量的各个详细信息。例如,创建的第一个张量默认数据类型是不同的:

  其次,使用张量类来初始化整数将返回该长度的全零维数量,并且张量函数返回零维张力,只有此元素:

  当然,需要提及优先级:使用张量类以接收序列以创建张量时,返回的数据类型为float类型。这是因为张量是Floattersor的等效形式,也就是说,除此之外,还有bytetensor,inttensor,longTensor和doubleTensor和其他不同的默认数据类型。

  基于现有数据创建有两个共同的功能:张量:

  两者和上述方法之间的最大区别是,它们返回的张量与原始数据共享,并且上述张量函数和张量类是复制以创建一个新对象。例如:例如:

  随机初始化也是一种常用的形式。例如,在设置神经网络模型时,实际上,模块的重量也自动在模块后面初始初始化。整个模块,该方法通常分为两种形式:

  例如,pytorch中的完整连接的单元线性将创建相应的权重系数和偏差(注意,因为网络参数通常需要参与后续模型培训,因此默认要求regirtes_grad = true):

  总体而言,这两种方法几乎与numpy中的相应方法一致,它们基本上可以从函数名称中获得其相应的含义,并且不再在此处扩展。

  作为交互式数据的一种常见形式,Pytorch自然不存在文件。实际上,Pytorch不会故意区分要保留和加载的对象。它可以是训练有素的网络或数据,它是python中的泡菜。实现这对反向函数的功能是torch.save和torch.load.load.load.load.nefe,值得指出的是,保留的文件没有清晰的后缀格式要求。有三种常见的后缀格式:

  例如:

  类似地:在Pytorch中创建张量可以分为三种方法,即:1)从现有数据结构转换为张量,2)随机初始化以生成张量,3)将保存的文件加载到张量中。第一种方法主要用于构建训练数据集,第二种方法是从网络模块参数的初始化中隐藏的,第三种方法可用于保存和跨环境使用大数据集。

  Pytorch定义张量以支持深度学习并且不使用列表中的数组或python中的numpy的原因。毕竟,张量具有一些独特的功能。在这里,我还将张量的特征汇总为三个方面:

  让我们在下面介绍它们。

  张量本质上是由数值元素组成的高维矩阵,深度学习过程实际上是各种矩阵操作的过程。因此,作为其基本数据结构,张量自然需要丰富的功能操作。构建张量实例,通过python中的dir属性获得张量实例支持的所有API,请过滤掉构建的系统-in方法“ _”(例如“ __str__”)。仍然有567种。该操作的丰富性是显而易见的。

  其中一些功能是在自身上操作的,例如tensor.max(),tensor.abs()等,而一些功能则用于与其他张量进行相关操作,例如tensor.add.add()添加到另一个张量,Tensor.mm()用于用另一个张量执行矩阵乘法。当然,此处的添加和乘法需要需要操作的两个张量尺寸。

  除了支持支持功能外,张量的API功能还具有另一个重要的便利特征:绝大多数功能支持两个版本:放下线条和不清版本,例如Tensor.abs.abs.abs()和Tensor.abs_(ABS_(),两者都在操作后返回张量,但与此同时,该行版本属于Inploph Operation,即调用后的数据也更改。

  内部版本功能中有159种

  如前所述,当创建张量与Numpy和Pandas中的用法相似时,已经提到了DTYPE的概念,该张量被用来指定要创建的数据结构。Pytorch定义了10个不同的数据结构,包括不同的数据结构 - 包括不同的数据结构 -长度整数和浮动 - 不同长度的点类型。整个TESOR的所有元素都必须具有相同的数据类型,并且必须是数值类型(Numpy中的数组还要求在数组中的数组中,元素是同质的,但支持字符串类型):

  张量中的10种数据类型(不完整版本)

  除了支持不同的数值数据类型外,张量的另一个主要特征是其支持不同的计算单元:CPU或GPU。支持GPU加速度也是深度学习深度学习的主要关键。为了切换CPU计算(存储在内存中)或GPU计算(存储在内存中的数据),张量支持灵活的设置存储设备,包括以下两种方法:

  to()可用于切换存储设备,或者可以切换数据类型

  当然,可以切换到GPU的前提是操作环境具有独立的图形卡,并已配置了CUDA ...此外,除了DTYPE和设备的两个特征外,Tensor具有第三个特征,即布局,布局。它主要包含两种类型:踩踏和Sparse_coo。通常不需要考虑此功能。

  如果您支持丰富而功能的操作和灵活的特征,则张量不足以支持深度学习的基石。关键是自动梯度解决方案也需要自动梯度。

  深度学习模型的核心是神经元的连接,神经元之间连接的关键是网络权重,即每个模块的参数。由于不同的网络参数,相同的网络结构可以实现不同的模型应用程序值。因此,如何学习最佳网络参数?这是深度学习中的优化武器:梯度下降方法,梯度下降方法的主要前提是支持自动梯度解决方案。

  简而言之,为了支持自动梯度解决方案,张量如下:

  张量的自动梯度指南中有许多细节。值得在这里引入。它仅在此处介绍,并将通过后续推文共享。

  同样:张量具有许多特征,这使其成为复杂的操作,可以支持深度学习。就个人而言,那些认为更重要的是包括三个方面,即:1)丰富的操作功能,2)三个功能(DTYPE,设备和布局)和3)自动梯度指导。

  本文从如何构建张量张量的张量的三个方面开始。它简要介绍了pytorch -tensor的核心数据结构。理解和熟练地使用张量的共同操作是深度学习的基石,就像“站在岸上上学,不游泳”。学习张量的重点是实践。

  原始:https://juejin.cn/post/70953693432748198