首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从模型源码梳理TensorFlow的形状相关操作

[阿里DIN]从模型源码梳理TensorFlow的形状相关操作 目录 [阿里DIN]从模型源码梳理TensorFlow的形状相关操作 0x00 摘要 0x01 reduce_sum 1.1 reduce_sum...0x01 reduce_sum 因为 reduce_sum 中有降维可能,所以在这里一起讲解 1.1 reduce_sum函数 reduce_sum() 用于计算张量tensor沿着某一维度的和,可以在求和后降维...,则系统默认为False; name:操作的名称; reduction_indices:在以前版本中用来指定轴,已弃用; keep_dims:在以前版本中用来设置是否保持原张量的维度,已弃用; 1.2...0维,又称0维张量,数字,标量:1 1维,又称1维张量,数组,vector:[1, 2, 3] 2维,又称2维张量,矩阵,二维数组:[[1,2], [3,4]] 3维,又称3维张量,立方(cube),三维数组...(二维矩阵的元素是一维数组)的axis是1,而1,2,3,4,5,6,7,8这8个数的axis是2。

83620

Tensorflow 的reduce_sum()函数的axis,keep_dim这些参数到底是什么意思?

answer/125426642 来源:知乎 这个问题无外乎有三个难点: 什么是sum 什么是reduce 什么是维度(indices, 现在均改为了axis和numpy等包一致) sum很简单,就是求和...对于tensorflow,默认行为是最后一种,也就是全加在一起。 1. 什么是维度?什么是轴(axis)?如何索引轴(axis)? 注:对Axis比较熟悉的读者可跳过这部分解释,只看加粗字体。...虽然在一般人中习惯了整数维,但在分形中维度不一定是整数,可能会是一个非整的有理数或者无理数。 妈呀,好复杂,我只是想写个tensorflow代码呀。...所有不同维度的形式如下: 0维,又称0维张量,数字,标量:1 1维,又称1维张量,数组,vector:[1, 2, 3] 2维,又称2维张量,矩阵,二维数组:[[1,2], [3,4]] 3维,又称3维张量...axis代表轴)。

99150
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    盘一盘 Python 特别篇 23 - 爱因斯坦求和 einsum

    从标量可以猜想出以上规则,但标量没有轴的概念,而且求和与其本身也看不来区别,因此我们需要用向量、矩阵和张量来验证或完善上面的规则。 2.2 向量 1 维单数组 首先创建向量 arr1。...2.4 张量 多维单数组 上节已经讲完了,从 'ijk' 到 'ij','jk' 和 'ik' 其实就是三维数组分别在轴 k、轴 i 和周 j 上做求和,因此把对应的轴“打掉”降了一维。...字符串 "ijk,jil->kl" 将 A 切片轴 0-1 得到一个形状为 (3, 4) 的二维矩阵,比如 a;将 B 切片轴 0-1 得到一个形状为 (4, 3) 的二维矩阵,比如 b;然后用 a 乘以...这样的操作重复做最终填满形状为 (5, 2) 的二维矩阵 ("ijk,jil->kl") ,因为 A 沿轴 2 的元素个数是 5,B 沿轴 2 的元素个数是 2。...8 指标 o 对应维度中的元素个数为 5 4 总结 NumPy 包中的 einsum 可以替代如下常用的运算, 矩阵求迹: trace 求矩阵对角线: diag 张量(沿轴)求和: sum 张量转置:

    2K20

    Python人工智能在贪吃蛇游戏中的运用与探索(中)

    「什么叫张量(tensor)」 首先声明这里我们指的张量(tensor )是「Tensorflow」里最基本的数据结构.它是tensorflow最重要的概念,顾名思义,flow是流动的意思,tensorflow...「它和物理学中的tensor不是同一」个概念。 那张量到底是什么东西呢?简单点说,张量就是多维数组的泛概念。通常一维数组我们称之为向量,二维数组我们称之为矩阵,这些都是张量的一种。...从上面图中,可以分析出张量的基本概念: 「维度」 也就是数据轴的个数。如前图数据有3个轴,分别指城市,分类,时间。借用生命科学中的知识,界门纲目科属种即可以表示生物分类的七个维度。...「形状」 表示张量沿每个轴的大小(元素个数),也就是shape。前面图矩阵示例的形状为(3, 5),3D 张量示例的形状为(3, 5, 3)。...比如(2,3)就表示为一维有3个元素,二维两个元素的二维张量。 「tensorflow中使用张量的优势」 用tensorflow 搭建的神经网络,输入层和输出层的值都是张量的形式。

    2.4K50

    tf.compat

    .): 将值转换为稀疏张量或张量。cos(...): 计算cosx元素。cosh(...): 计算x元素的双曲余弦。count_nonzero(...): 计算张量维上非零元素的个数。....): 向TF运行时保证输入张量是常数。hessians(...): 在x中构造y对x求和的黑森函数。histogram_fixed_width(...): 返回值的直方图。...matrix_square_root(...): 计算一个或多个方阵的矩阵平方根:matrix_transpose(...): 转置张量a的最后二维。....): 沿指定维连接稀疏张量列表。(弃用参数)sparse_fill_empty_rows(...): 用默认值填充输入二维稀疏张量中的空行。....): 重置指标和值不变的稀疏张量的形状。sparse_reshape(...): 重新构造稀疏张量,以新的密集形状表示值。sparse_retain(...): 在稀疏张量中保留指定的非空值。

    5.3K30

    TensorFlow简介

    TensorFlow是由Google开发的用于解决复杂数学问题的库。本篇介绍将简述TensorFlow示例,如何定义、使用张量执行数学运算,以及查看其他机器学习相关示例。...TensorFlow有两个版本的您可以下载CPU版本或者GPU版本。 在开始使用TensorFlow示例之前,我们需要了解一些基本知识。 什么是张量? 张量是TensorFlow使用的主要数据块。...它们就像TensorFlow用来处理数据的变量。每个张量都有一个维度和一个类型。 维度是指张量的行和列。您可以定义一维张量,二维张量和三维张量,关于张量详细使用我们将在后面看到。...三维张量 我们已经看到了如何处理一维和二维张量。现在,我们将处理三维张量。但这一次,我们不使用数字;,而使用RGB图像,其中每一幅图像都由x,y和z坐标指定。 这些坐标是宽度,高度和颜色深度。...(myimage,name='image') vars = tf.global_variables_initializer() 然后我们将使用这个  transpose 函数来翻转输入网格的0和1轴:

    6.3K160

    【tensorflow】浅谈什么是张量tensor

    1维张量/向量 如果你是名程序员,那么你已经了解,类似于1维张量:数组。 每个编程语言都有数组,它只是单列或者单行的一组数据块。在深度学习中称为1维张量。张量是根据一共具有多少坐标轴来定义。...1维张量只有一个坐标轴。 1维张量称为“向量”。我们可以把向量视为一个单列或者单行的数字。...我们可以把它看作为一个带有行和列的数字网格。这个行和列表示两个坐标轴,一个矩阵是二维张量,意思是有两维,也就是有两个坐标轴的张量。...张量具有“形状”,它的形状是一个水桶,即装着我们的数据也定义了张量的最大尺寸。我们可以把所有人的数据放进二维张量中,它是(10000,7)。 你也许想说它有10000列,7行。不。...张量能够被转换和操作,从而使列变为行或者行变为列。 3维张量 这时张量真正开始变得有用,我们经常需要把一系列的二维张量存储在水桶中,这就形成了3维张量。

    76410

    你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?

    1维张量/向量 如果你是名程序员,那么你已经了解,类似于1维张量:数组。 每个编程语言都有数组,它只是单列或者单行的一组数据块。在深度学习中称为1维张量。张量是根据一共具有多少坐标轴来定义。...1维张量只有一个坐标轴。 1维张量称为“向量”。 我们可以把向量视为一个单列或者单行的数字。...我们可以把它看作为一个带有行和列的数字网格。 这个行和列表示两个坐标轴,一个矩阵是二维张量,意思是有两维,也就是有两个坐标轴的张量。...张量具有“形状”,它的形状是一个水桶,即装着我们的数据也定义了张量的最大尺寸。我们可以把所有人的数据放进二维张量中,它是(10000,7)。 你也许想说它有10000列,7行。 不。...张量能够被转换和操作,从而使列变为行或者行变为列。 3维张量 这时张量真正开始变得有用,我们经常需要把一系列的二维张量存储在水桶中,这就形成了3维张量。

    4.6K71

    Keras-learn-note(2)

    1.符号计算 Keras的底层库使用Theano或TensorFlow,这两个库也称为Keras的后端。无论是Theano还是TensorFlow,都是一个“符号式”的库。...张量的阶数有时候也称为维度,或者轴,轴这个词翻译自英文axis。...譬如一个矩阵[[1,2],[3,4]],是一个2阶张量,有两个维度或轴,沿着第0个轴(为了与python的计数方式一致,本文档维度和轴从0算起)你看到的是[1,2],[3,4]两个向量,沿着第1个轴你看到的是...= np.sum(a, axis=1) print(sum0) print(sum1) 如果从坐标系的角度看二维矩阵,所谓的0轴就是沿y轴负方向,1轴沿x轴正方向。...而TensorFlow,的表达形式是(100,16,32,3),即把通道维放在了最后,这种数据组织方式称为“channels_last”。

    42210

    Keras-learn-note(1)

    1.符号计算 Keras的底层库使用Theano或TensorFlow,这两个库也称为Keras的后端。无论是Theano还是TensorFlow,都是一个“符号式”的库。...张量的阶数有时候也称为维度,或者轴,轴这个词翻译自英文axis。...譬如一个矩阵[[1,2],[3,4]],是一个2阶张量,有两个维度或轴,沿着第0个轴(为了与python的计数方式一致,本文档维度和轴从0算起)你看到的是[1,2],[3,4]两个向量,沿着第1个轴你看到的是...= np.sum(a, axis=1) print(sum0) print(sum1) 如果从坐标系的角度看二维矩阵,所谓的0轴就是沿y轴负方向,1轴沿x轴正方向。...而TensorFlow,的表达形式是(100,16,32,3),即把通道维放在了最后,这种数据组织方式称为“channels_last”。

    54010

    深度学习基本概念|张量tensor

    以图像为例,每一幅图像可以看作由像素点构成的二维数组,而每个像素点又可以表示成RGB对应的3元组,经过这样的嵌套之后,每一幅图像实际上变成了一个高阶数组, 图示如下 ?...在深度学习中,采用tensor来存储高阶数组对应的数据。tensor, 中文叫做张量,谷歌的开源机器学习框架TensorFlow也是建立在张量的基础上。...tensorflow中,定义张量的方式如下 >>> import tensorflow as tf >>> rank_0_tensor = tf.constant(4) >>> rank_1_tensor...张量有以下几个基本属性 1. shape, 形状,统计各个维度的元素数量 2. rank, 秩,维度的总数 3. axis, 轴,具体的某一个维度 >>> rank_4_tensor = tf.zeros...tensorflow通过张量这一数据结构来存储待处理的数据,并再次基础上定义了一系列的张量操作,来高效的处理深度学习运算。

    90810

    什么是张量计算?常见的张量计算引擎介绍

    标量(Scalar): 是0阶张量,代表单一数值。 2. 向量(Vector): 是1阶张量,即一维数组。 3. 矩阵(Matrix): 是2阶张量,即二维数组。 4....- 缩并运算(Contracting):选择张量中的两个或多个维度进行求和操作,减少张量的阶数。 - 内积运算:通过选取张量中的某些维度进行配对相乘并求和,得到更低阶的张量。...张量计算的高效实现通常依赖于专门的软件库(如TensorFlow、PyTorch)和硬件加速器(GPU、TPU),这些工具能够处理大规模数据集并加速训练过程。...TensorFlow: TensorFlow 是 Google 开发的一个开源软件库,专为高性能数值计算而设计,特别适合大规模的机器学习和深度学习应用。...TensorFlow 引入了数据流图的概念,允许用户构建复杂的计算模型,并自动微分以进行优化。 3.

    54810

    张量 101

    X2 将一维张量 X1 重新排成 3×4 的二维张量 X3 用 nd.random.normal 和张量的形状 (3, 4, 5) 来定义一个高斯随机张量 X4 用 nd.zeros 和张量的形状 (...简介 机器学习 (深度学习) 中用到的数据,包括结构性数据 (数据表、序列) 和非结构性数据 (图片、视屏) 都是张量,总结如下: 数据表:2 维,形状 = (样本数,特征数) 序列类:3 维,形状...例五:当 x 是 3D 张量,y 是 2D 张量,np.dot(x, y) 是将 x 的最后一维和 y 的倒数第二维的元素相乘并加总。...具体做法,先适当复制元素使得这两个张量形状相同后再按元素操作,两个步骤: 广播轴 (broadcast axes):比对两个张量的维度,将形状小的张量的维度 (轴) 补齐 复制元素:顺着补齐的轴,将形状小的张量里的元素复制...在列上元素做 softmax,显然在列上元素求和都等于 1,因为有两行,所有最后结果是两个 1。 5.2 由简推繁 上节已经弄懂四种张量运算的类型了,本节再回到用神经网络来识别数字的例子。

    2.9K20

    TensorFlow是什么?怎么用?终于有人讲明白了

    02 张量 TensorFlow处理的基本数据单元是张量(Tensor),它包含在TensorFlow这个单词中。张量仅仅是一个形为n维数组的基本类型(例如,浮点数)的集合。...以下是张量的一些示例(包括相关的Python定义): 1→一个纯量 [1,2,3]→一个向量 [[1,2,3], [4,5,6]]→一个矩阵或二维数组 张量具有静态类型和动态维度。...阶 数学实体 Python例子 0 纯量(例如,长度或重量) L=30 1 张量(例如,二维平面中物体的速度) S=[10.2,12.6] 2 矩阵 M=[[23.2,44.2],[12.2,55.6]...考虑非常简单的事情:对两个张量求和,即 x1+x2 可以使用图1-20的计算图来执行计算。 ?...让我们开始使用tf.constant张量类型。我们需要三个节点:两个用于输入变量,一个用于求和。

    1.2K10

    einsum,一个函数走天下

    在实现一些算法时,数学表达式已经求出来了,需要将之转换为代码实现,简单的一些还好,有时碰到例如矩阵转置、矩阵乘法、求迹、张量乘法、数组求和等等,若是以分别以 transopse、sum、trace、tensordot...:diag 张量(沿轴)求和:sum 张量转置:transopose 矩阵乘法:dot 张量乘法:tensordot 向量内积:inner 外积:outer 该函数在 numpy、tensorflow、...换成省略号,以表示剩下的所有维度: 这种写法 pytorch 与 tensorflow 同样支持,如果不是很理解的话,可以查看其对应的公式: ? 矩阵乘法的公式为: ?...然后是测试代码: 上面 Timer 是 timeit 模块内的一个类 将两个函数各执行 20 遍,最后的结果为,单位为秒: 可以看到,einsum 比 sum 快了几乎一个量级,接下来测试单个张量求和...: 将上面的代码改一下: 相应的运行时间为: 还是 einsum 更快,所以哪怕是单个张量求和,numpy 上也可以用 einsum 替代,同样,求均值(mean)、方差(var)、标准差(std)

    2K20

    TensorFlow是什么?怎么用?终于有人讲明白了

    02 张量 TensorFlow处理的基本数据单元是张量(Tensor),它包含在TensorFlow这个单词中。张量仅仅是一个形为n维数组的基本类型(例如,浮点数)的集合。...以下是张量的一些示例(包括相关的Python定义): 1→一个纯量 [1,2,3]→一个向量 [[1,2,3], [4,5,6]]→一个矩阵或二维数组 张量具有静态类型和动态维度。...阶 数学实体 Python例子 0 纯量(例如,长度或重量) L=30 1 张量(例如,二维平面中物体的速度) S=[10.2,12.6] 2 矩阵 M=[[23.2,44.2],[12.2,55.6]...考虑非常简单的事情:对两个张量求和,即 x1+x2 可以使用图1-20的计算图来执行计算。 ?...让我们开始使用tf.constant张量类型。我们需要三个节点:两个用于输入变量,一个用于求和。

    1K10

    TensorFlow是什么?怎么用?终于有人讲明白了

    02 张量 TensorFlow处理的基本数据单元是张量(Tensor),它包含在TensorFlow这个单词中。张量仅仅是一个形为n维数组的基本类型(例如,浮点数)的集合。...以下是张量的一些示例(包括相关的Python定义): 1→一个纯量 [1,2,3]→一个向量 [[1,2,3], [4,5,6]]→一个矩阵或二维数组 张量具有静态类型和动态维度。...阶 数学实体 Python例子 0 纯量(例如,长度或重量) L=30 1 张量(例如,二维平面中物体的速度) S=[10.2,12.6] 2 矩阵 M=[[23.2,44.2],[12.2,55.6]...考虑非常简单的事情:对两个张量求和,即 x1+x2 可以使用图1-20的计算图来执行计算。...让我们开始使用tf.constant张量类型。我们需要三个节点:两个用于输入变量,一个用于求和。

    96420

    从模型源码梳理TensorFlow的乘法相关概念

    [阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念 目录 [阿里DIN] 从模型源码梳理TensorFlow的乘法相关概念 0x00 摘要 0x01 矩阵乘积 1.1 matmul product...实现 矩阵乘法本质上只能是两个二维的matrix进行叉乘,那么两个三维甚至四维的矩阵相乘是怎么做到的呢?...4.1 目的 广播的目的是将两个不同形状的张量 变成两个形状相同的张量: TensorFlow支持广播机制(Broadcast),可以广播元素间操作(elementwise operations)。...其中所谓的单独维度就是一个维度为1,或者那个维度缺失) 4.2 机制 广播的机制是: 先对小的张量添加轴(使其ndim与较大的张量相同); 再把较小的张量沿着新轴重复(使其shape与较大的相同); 广播的的限制条件为...: 两个张量的 trailing dimension(从后往前算起的维度)的轴长相等; 或 其中一个的长度为1; 即,如果两个数组的后缘维度(从末尾开始算起的维度) 的 轴长度相符或其中一方的长度为1,

    1.7K20

    NumPy的广播机制

    ,a2是0维张量,即标量,?...,b1,b2是1维张量,即向量,c1,c2是如下所示的2维张量,即矩阵:?...广播(Boardcasting)是NumPy中用于在不同大小的阵列(包括标量与向量,标量与二维数组,向量与二维数组,二维数组与高维数组等)之间进行逐元素运算(例如,逐元素 加法,减法,乘法,赋值等)的一组规则...尽管该技术是为NumPy开发的,但它在其他数值计算库中也得到了更广泛的应用,例如深度学习框架TensorFlow和Pytorch。...1时,这个数组能够用来计算,否则出错当输入数组的某个轴的长度为1时,沿着此轴运算时都用此轴上的第一组值简单来说,我总结为两条规则:两个array的shape长度与shape的每个对应值都相等的时候,那么结果就是对应元素逐元素运算

    1.9K40
    领券