张量是pytorch神经网络的血液,没有血液的流通就没有整个pytorch躯体的运转。...张量。...这里要格外注意的是 当代码为torch.Tensor时,表示的意义与torch.tensor意义不同。...当想申请一些未初始化的数据时,(1)使用empty参数给出shape # torch.empty(d1, d2) a = torch.empty(1, 2) # (2)用FloatTensor给出shape...注意:以维度创建张量的torch.Tensor包含了torch.FloatTensor和torch.IntTensor两种,当以torch.Tensor创建数据时,默认为FloatTensor类型创建(
文 |AI_study 今天是《高效入门Pytorch》的第二篇文章,上一篇我们讲解到《张量解释——深度学习的数据结构》。 在这篇文章中,我们将深入研究张量,并介绍三个基本的张量属性,阶,轴和形状。...这些概念建立在一个又一个的基础上,从阶开始,然后是轴,最后到形状,所以要注意这三者之间的关系。 ? 阶、轴和形状都与我们在上一篇文章中讨论的索引概念有着根本的联系。如果你没看过,我强烈建议你去看看。...注意,在PyTorch中,张量的大小和形状是一样的。 3 x 3的形状告诉我们,这个2阶张量的每个轴的长度都是3,这意味着我们有三个沿着每个轴可用的索引。现在让我们看看为什么张量的形状如此重要。...重构(reshape)张量 在我们研究 reshape 张量之前,请回想一下开始重构之前,我们是如何使用下面术语列表的: Shape 6 x 1 number scalar array vector 2d-array...现在,假设我们需要重构 t 的形状为[1,9]。这将为我们提供一个沿第一个轴的数组和沿第二个轴的九个数字。
如果没有特殊说明,本专栏中所说的张量均指的是张量类的实例。 一、入门 如果尚未安装PyTorch库,可使用如下命令进行安装。由于官网下载速度很慢,可以通过清华源链接下载PyTorch。 !...x = torch.arange(12) x 可以通过张量的shape属性来访问张量(沿每个轴的长度)的形状(shape)。...torch.randn(3, 4) 我们还可以通过提供包含数值的Python列表(或嵌套列表),来为所需张量中的每个元素赋予确定值。在这里,最外层的列表对应于轴0,内层的列表对应于轴1。...我们将在后面的文章中解释线性代数的重点内容。 我们也可以把多个张量连结(concatenate)在一起,把它们端对端地叠起来形成一个更大的张量。我们只需要提供张量列表,并给出沿哪个轴连结。...X == Y 对张量中的所有元素进行求和,会产生一个单元素张量。 X.sum() 三、广播机制 在上面的部分中,我们看到了如何在相同形状的两个张量上执行按元素操作。
len(x) 4 当用张量表示一个向量(只有一个轴)时,我们也可以通过.shape属性访问向量的长度。形状(shape)是一个元素组,列出了张量沿每个轴的长度(维数)。...为了清楚起见,我们在此明确一下:向量或轴的维度被用来表示向量或轴的长度,即向量或轴的元素数量。然而,张量的维度用来表示张量具有的轴数。在这个意义上,张量的某个轴的维数就是这个轴的长度。...A.shape, A.sum() 默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。我们还可以指定张量沿哪一个轴来通过求和降低维度。...以矩阵为例,为了通过求和所有行的元素来降维(轴0),可以在调用函数时指定axis=0。由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。...标量、向量、矩阵和张量分别具有零、一、二和任意数量的轴。 一个张量可以通过sum和mean沿指定的轴降低维度。 两个矩阵的按元素乘法被称为他们的哈达玛积。它与矩阵乘法不同。
维度(Dimensions) Tensor(张量)的维度(Dimensions)是指张量的轴数或阶数。...在PyTorch中,可以使用size()方法获取张量的维度信息,使用dim()方法获取张量的轴数。 2....一维卷积运算 【深度学习】Pytorch 系列教程(六):PyTorch数据结构:2、张量的数学运算(4):一维卷积及其数学原理(步长stride、零填充pad;宽卷积、窄卷积、等宽卷积;卷积运算与互相关运算...张量拆分 split 沿指定维度将张量拆分为多个张量 import torch # 创建一个张量 x = torch.tensor([[1, 2, 3], [4, 5, 6]]) y1, y2 =...x.split(2, dim=1) print(y1) print(y2) unbind 沿指定维度对张量进行拆分,返回拆分后的张量列表 import torch x = torch.tensor
:diag 张量(沿轴)求和:sum 张量转置:transopose 矩阵乘法:dot 张量乘法:tensordot 向量内积:inner 外积:outer 该函数在 numpy、tensorflow、...pytorch 上都有实现,用法基本一样,定义如下: equation 是字符串的表达式,operands 是操作数,是一个元组参数,并不是只能有两个,所以只要是能够通过 einsum 标记法表示的乘法求和公式...然后是测试代码: 上面 Timer 是 timeit 模块内的一个类 将两个函数各执行 20 遍,最后的结果为,单位为秒: 可以看到,einsum 比 sum 快了几乎一个量级,接下来测试单个张量求和...: 将上面的代码改一下: 相应的运行时间为: 还是 einsum 更快,所以哪怕是单个张量求和,numpy 上也可以用 einsum 替代,同样,求均值(mean)、方差(var)、标准差(std)...: einsum_path 返回一个 einsum 可使用的优化路径列表,一般使用第一个优化路径;另外,optimize 及 einsum_path 函数只有 numpy 实现了, tensorflow
PyTorch 中的底层框架:张量 (Tensor) 在 PyTorch 中,张量 (Tensor) 是其核心的数据结构之一,几乎所有操作都与张量密切相关。...张量本质上是一个类(torch.Tensor),与 NumPy 中的 ndarray 相似,但是它支持 GPU 加速。...张量的初始化 PyTorch 提供了多种方式来初始化张量,常用的有: 从数据创建张量:可以直接使用 torch.tensor() 来从 Python 列表或 NumPy 数组创建张量。...PyTorch 张量可以在 CPU 或 GPU 上运行。...提供了对张量的求和、求平均、最大值、最小值等操作。
PyTorch 是一个 主要用于深度学习的Python 库。PyTorch 最基本也是最重要的部分之一是创建张量,张量是数字、向量、矩阵或任何 n 维数组。...创建张量的一种方法是通过指定其维度来初始化一个随机张量 describe(torch.Tensor(2, 3)) 使用 Python 列表以声明方式创建张量 我们还可以使用 python 列表创建张量。...torch.index_select() 这个函数返回一个新的张量,该张量使用索引中的条目(LongTensor)沿维度 dim 对输入张量进行索引。...torch.stack() 这将沿新维度连接一系列张量。...describe(torch.stack([x, x, x],dim = 0)) 我们可以将我们想要连接的张量作为一个张量列表传递,dim 为 0,以沿着行堆叠它。
表示堆叠的另一种方式是,我们创建一个新轴,然后在该轴上连接。...添加这样的轴会改变数据在张量内部的组织方式,但不会改变数据本身。基本上,我们只是在重构这个张量。我们可以通过检查每一个的形状看出。...这意味着我们正在扩展现有轴的长度。 当我们叠加的时候,我们创建了一个新的轴这是以前不存在的这发生在我们序列中的所有张量上,然后我们沿着这个新的序列。 让我们看看如何在PyTorch中实现这一点。...请注意,每个张量都有一个轴。这意味着cat函数的结果也将具有单个轴。这是因为当我们连接时,我们沿现有的轴进行连接。请注意,在此示例中,唯一存在的轴是第一个轴。...请注意,由于当前不存在第二个轴,因此无法沿着第二个轴合并此张量序列,因此在这种情况下,堆叠是我们唯一的选择。 让我们尝试沿第二个轴堆叠。
默认情况下,调用求和函数会沿所有的轴降低张量的维度,使它变为一个标量。我们还可以指定张量沿哪一个轴来通过求和降低维度。...以矩阵为例,为了通过求和所有行的元素来降维(轴0),我们可以在调用函数时指定axis=0。由于输入矩阵沿0轴降维以生成输出向量,因此输入轴0的维数在输出形状中消失。...,按照第一个维度(轴0、即行)求和,消去了第一个维度。...同样,计算平均值的函数也可以沿指定轴降低张量的维度。...此函数不会沿任何轴降低输入张量的维度。
一、函数列表 abs(...): 计算张量的绝对值。 accumulate_n(...): 返回张量列表的元素和。 acos(...): 计算x元素的acos。...add_n(...): 按元素顺序添加所有输入张量。 angle(...): 返回复张量(或实张量)的元素参数。 argmax(...): 返回一个张量在轴上的最大值的指标。...除非keepdims为真,否则对于轴上的每一项,张量的秩都会减少1。如果keepdims为真,则使用长度1保留缩减后的维度。如果轴为空,则所有维数都被缩减,并返回一个只有一个元素的张量。...除非keepdims为真,否则对于轴上的每一项,张量的秩都会减少1。如果keepdims为真,则使用长度1保留缩减后的维度。如果轴为空,则所有维数都被缩减,并返回一个只有一个元素的张量。...7、tf.math.argmax 返回一个张量在轴上的最大值的指标。
将两个正交矩阵投影到一个立方体的内部; 2. 将每个交叉点的一对值相乘,得到一个乘积网格; 3. 沿第三个正交维度进行求和,以生成结果矩阵。...,反射着其对应参数和结果: 2d 对外积求和 第三次平面分解是沿着 k 轴,通过对向量外积逐点求和来计算矩阵乘法结果。...:左侧参数的行与结果的行共面 —— 它们沿同一根轴 (i) 堆叠。...,就很难直觉地理解:它展示了如何通过沿 j 轴对左侧子表达式分区、沿 i 轴对右侧子表达式分区以及沿 k 轴对父表达式进行分区来并行化一个二元表达式: 4 深入注意力头 现在来看看 GPT-2 的注意力头...这里也给出沿多个轴进行分区的示例。
,反射着其对应参数和结果: 2d 对外积求和 第三次平面分解是沿着 k 轴,通过对向量外积逐点求和来计算矩阵乘法结果。...:左侧参数的行与结果的行共面 —— 它们沿同一根轴 (i) 堆叠。...,就很难直觉地理解:它展示了如何通过沿 j 轴对左侧子表达式分区、沿 i 轴对右侧子表达式分区以及沿 k 轴对父表达式进行分区来并行化一个二元表达式: 4 深入注意力头 现在来看看 GPT-2 的注意力头...这里也给出沿多个轴进行分区的示例。...下面的可视化显示了一个注意力头,其权重张量 wQ、wK_t、wV、wO 被低秩分解 wQ_A @ wQ_B 等替换。从视觉上看,因子矩阵呈现为沿风车叶片边缘的低栅栏:
cat() torch.cat() 是 PyTorch 中用于沿指定轴连接张量的函数。它能够将多个张量沿指定维度进行拼接,返回一个新的张量,不会修改原始张量的数据。...dim (int): 指定沿哪个轴进行连接的维度。...stack() torch.stack() 用于在新的轴上堆叠张量的函数。它可以将一组张量沿着一个新的维度进行堆叠,返回一个新的张量,不会修改原始张量的数据。...,或者在构建输入数据时在新的轴上堆叠不同的特征。...chunk() torch.chunk() 是 PyTorch 中用于将张量沿指定维度分割为多个子张量的函数。它允许将一个张量分割成若干块,返回一个包含这些块的元组,不会修改原始张量的数据。
导入包 import torch 虽然被称为Pytorch,但是代码中使用torch 张量 张量表示由一个数值组成的数组,这个数组可能有多个维度。...具有一个轴的张量对应数学上的向量(vector);具有两个轴的张量对应数学上的矩阵(matrix);具有两个轴以上的张量没有特殊的数学名称。 可以使用 arange 创建一个行向量 x。...(沿每个轴的长度)的形状 x.shape # torch.Size([12]) x.numel() # 12 要想改变一个张量的形状而不改变元素数量和元素值,可以调用reshape函数。...只需要提供张量列表,并给出沿哪个轴连结。 下面的例子分别演示了当沿行(轴-0,形状的第一个元素)和按列(轴-1,形状的第二个元素)连结两个矩阵时,会发生什么情况。...(n维数组),Pytorch中张量的基本操作与Python数组、Numpy中基本一致,但要特别注意Pytorch中的广播机制。
cat() torch.cat() 是PyTorch中用于沿指定轴连接张量的函数。它能够将多个张量沿指定维度进行拼接,返回一个新的张量,不会修改原始张量的数据。...dim(int): 指定沿哪个轴进行连接的维度。...stack() torch.stack() 用于在新的轴上堆叠张量的函数。它可以将一组张量沿着一个新的维度进行堆叠,返回一个新的张量,不会修改原始张量的数据。...,或者在构建输入数据时在新的轴上堆叠不同的特征。...chunk() torch.chunk() 是PyTorch中用于将张量沿指定维度分割为多个子张量的函数。它允许将一个张量分割成若干块.返回一个包含这些块的元组,不会修改原始张量的数据。
Pytorch团队最新的一篇文章中,介绍了「mm」,一个用于matmuls和matmuls组合的可视化工具。...这就是矩阵乘法的直观含义: - 将两个正交矩阵投影到立方体内部 - 将每个交叉点上的一对数值相乘,形成一个乘积网格 - 沿第三个正交维度求和,得出结果矩阵 为了确定方向,mm工具会在立方体内部显示一个指向结果矩阵的箭头...通过对相应的左行和右列进行点乘计算每个结果元素。 我们在动画中看到的是乘法值矢量在立方体内部的扫描,每个矢量都会在相应位置产生一个求和结果。...第三个平面分解沿k轴进行,通过向量外积的点和计算出矩阵乘法结果。...基本思想 简而言之,关键的一步是训练权重矩阵的因子,而不是矩阵本身:用 I x K 张量和 K x J 张量的matmul替换 I x J 权重张量,保持 K 为某个小数字。
这个形状是(1,1,1,1,1,4,9) 将多个张量沿指定的维度进行连接 torch.cat(inputs, dim=0, out=None) inputs:一个或多个输入张量(可以是相同形状的多个张量...使用sum求和(沿某个轴方向 axis ) axis = ?意味着把那一维压缩 keepdims=True 表示保持求和结果的维度和原数组一致。...pytorch 实现了自动微分计算自动求导。 压导数 将导数拓展到不可微的函数。 计算图 张量的计算通常会生成计算图。...当计算标量的梯度时,PyTorch会自动计算并传播梯度,而无需明确传入梯度参数。然而,当处理非标量张量时,需要手动传入梯度参数。】...>`y.sum().backward()` 是使用 PyTorch 的自动微分功能进行反向传播。它计算了 `y` 张量的和,并通过链式法则将梯度传播回各个输入张量。这里的输入张量是 `x`。