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

JavaScript engine基础: Shapes and Inline Caches

无论有多少个对象,只要它们具有相同的形状,我们就只需存储一次形状和属性信息!...下一行添加了一个属性 "y",因此引擎会转换到另一个同时包含 "x "和 "y "的形状,并在 JSObject(偏移量 1 处)添加值 6。 注意:添加属性的顺序会影响形状。...最后,我们将得到一个包含单个值的 JSObject 和两个形状:空形状和只有 x 属性的形状。 第二个示例一开始也是一个空对象 b,但随后添加了一个不同的属性 "y"。...下面是一个具有 "x"、"y "和 "z "属性的 3D 点对象示例。...图片 即使只有一个数组元素具有非默认属性,整个数组的后备存储也会进入这种缓慢而低效的模式。避免在数组索引上使用 Object.defineProperty!(我不知道为什么要这么做。

25610

tf.where

如果x和y都为空,那么这个操作返回条件的真元素的坐标。坐标在二维张量中返回,其中第一个维度(行)表示真实元素的数量,第二个维度(列)表示真实元素的坐标。...记住,输出张量的形状可以根据输入中有多少个真值而变化。索引按行主顺序输出。如果两者都是非零,则x和y必须具有相同的形状。如果x和y是标量,条件张量必须是标量。...如果x和y是更高秩的向量,那么条件必须是大小与x的第一个维度匹配的向量,或者必须具有与x相同的形状。...如果条件是一个向量,x和y是高秩矩阵,那么它选择从x和y复制哪一行(外维),如果条件与x和y形状相同,那么它选择从x和y复制哪一个元素。...如果条件为秩1,x的秩可能更高,但是它的第一个维度必须与条件的大小匹配y: 与x形状和类型相同的张量name: 操作的名称(可选)返回值:一个与x, y相同类型和形状的张量,如果它们是非零的话。

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

    深度学习:张量 介绍

    这导致: (m, n) x (n, r) = (m, r) 如果情况并非如此,则必须转置其中一个矩阵以适应该顺序;这会切换行和列,但保留点积的向量。...但是,第一个轴必须相同: (z, m, n) x (z, n, r) = (z, m, r) 为什么是这样?嗯,如前所述,二维的点积主要是将向量彼此相乘。...为了使 和 彼此相乘,必须调换 的第二轴和第三轴。并且两者的大小均为 (3, 3, 2)。这意味着必须变成(3,2,3)。这可以使用 Y.permute(0, 2, 1) 来完成,它转置第二和第三轴。...[[ 1, 1], [ 6, -5], [ 8, -5]]]]) 点积 在四维中,张量乘法将具有与三维和二维中相同的要求。...它还需要第一轴和第二轴与两个张量匹配: (c、z、m、n) x (c、z、n、r) = (c、z、m、r) 在三维空间中,进行矩阵乘法,然后进行向量之间的点积。

    39020

    【现代深度学习技术】卷积神经网络04:多输入多输出通道

    这使得我们可以将输入、卷积核和输出看作二维张量。   当我们添加通道时,我们的输入和隐藏的表示都变成了三维张量。例如,每个RGB输入图像具有 3\times h\times w 的形状。...如果卷积核的窗口形状是 k_h\times k_w ,那么当 c_i=1 时,我们可以把卷积核看作形状为 k_h\times k_w 的二维张量。   ...由于输入和卷积核都有 c_i 个通道,我们可以对每个通道输入的二维张量和卷积核的二维张量进行互相关运算,再对通道求和(将 c_i 的结果相加)得到二维张量。...同时, 1\times 1 卷积层需要的权重维度为 c_o\times c_i ,再额外加上一个偏置。 图2 互相关计算使用了具有3个输入通道和2个输出通道的1×1卷积核。...其中,输入和输出具有相同的高度和宽度。   下面,我们使用全连接层实现 1 \times 1 卷积。请注意,我们需要对输入和输出的数据形状进行调整。

    12310

    tf.SparseTensor

    例如,indices=[[1,3], [2,4]]指定索引为[1,3]和[2,4]的元素具有非零值。...当构造SparseTensor对象时,这不是强制执行的,但大多数操作都假定正确的顺序。如果稀疏张量st的排序是错误的,可以通过调用tf.sparse_reorder(st)来获得一个固定的版本。...参数:indices:一个形状为[N, ndims]的二维int64张量。values:任何类型和形状[N]的一维张量。dense_shape:形状为[ndims]的1-D int64张量。...sp_values具有相同的类型;R-D;密集的张量操作数.name:操作的名称(可选).返回值:该方法返回一个与sp_values有相同的类型的张量,它是1维的;运行的N值。...sp_indices.sp_shape:int64类型的张量,是1维的;输入SparseTensor的形状.dense:一个张量;必须与sp_values具有相同的类型;R-D;密集的张量操作数.name

    2.1K20

    【现代深度学习技术】卷积神经网络03:填充和步幅

    在许多情况下,我们需要设置 p_h=k_h-1 和 p_w=k_w-1 ,使输入和输出具有相同的高度和宽度。这样可以在构建网络时更容易地预测每个图层的输出形状。...选择奇数的好处是,保持空间维度的同时,我们可以在顶部和底部填充相同数量的行,在左侧和右侧填充相同数量的列。   此外,使用奇数的核大小和填充大小也提供了书写上的便利。...对于任何二维张量X,当满足:卷积核的大小是奇数、所有边的填充行数和列数相同、输出与输入具有相同高度和宽度这3个条件时,则可以得出:输出Y[i, j]是通过以输入X[i, j]为中心,与卷积核进行互相关计算得到的...(conv2d, X).shape   当卷积核的高度和宽度不同时,我们可以填充不同的高度和宽度,使输出和输入具有相同的高度和宽度。...图2 垂直步幅为3,水平步幅为2的二维互相关运算   可以看到,为了计算输出中第一列的第二个元素和第一行的第二个元素,卷积窗口分别向下滑动三行和向右滑动两列。

    6010

    解开贝叶斯黑暗魔法:通俗理解贝叶斯线性回归

    因为我已经远离贝叶斯“这种东西”很久了。但用到的时候必须做一些改变。所以我不得不从头开始学习(几乎)。...我们想解决的问题:Y =β1X +β0+ε ---- ---- 关于线性回归的第一个假设是,我们假设数据具有以下形式。 ? 从这样的模型生成的数据如下所示。 ?...正如您对β0和β1所看到的,很多采样值接近0,,但β1与β0相比形状更加扁(β0与β1相比接近0的比例较低) ? 为什么是正态分布? 为什么我们使用正态分布?正态分布具有非常好的分析特性。...这是我们在例子中得到的图表。 ? 上图说明什么? 上图显示,当β0接近-2.5,β1接近1.5时,我们可以看到数据X和Y能够得到最大的似然值,最好地拟合数据。...对于一个新的数据点,我们如何获得答案? ---- ---- 根据β1和β0,我们有一个很直接的后验分布。对于给定的x,你只要从后验分布中采样不同的β0和β1,并得到y的值(即Y =β0+β1x)。

    9.3K142

    【深度学习基础】预备知识 | 数据操作

    这个新的张量包含与转换前相同的值,但是它被看成一个3行4列的矩阵。要重点说明一下,虽然张量的形状发生了改变,但其元素值并没有变。注意,通过改变张量的形状,张量的大小不会改变。...对于任意具有相同形状的张量,常见的标准算术运算符(+、-、*、/和**)都可以被升级为按元素运算。我们可以在同一形状的任意两个张量上调用按元素操作。...下面的例子分别演示了当我们沿行(轴-0,形状的第一个元素)和按列(轴-1,形状的第二个元素)连结两个矩阵时,会发生什么情况。...这种机制的工作方式如下: 通过适当复制元素来扩展一个或两个数组,以便在转换之后,两个张量具有相同的形状; 对生成的数组执行按元素操作。   ...与任何Python数组一样:第一个元素的索引是0,最后一个元素索引是-1;可以指定范围以包含第一个元素和最后一个之前的元素。

    4600

    3D重建:硬派几何求解vs深度学习打天下?

    莫尔条纹法依赖的是栅栏状条纹重叠下所产生的干涉影像。该方法的优点是精度高,比较稳健,但是对物体的要求很高——表面必须具有规则纹理。...根据相似三角形原理(图 2 右侧),我们可以轻易得出相机坐标系和图像坐标系的关系:Z/f = Y/y = X/x 整理后可以得到: x = f*X/Z y = f*Y/Z z = f 即点(X,Y...因此我们需要对成像坐标系进行缩放和平移,来吻合像素的实际坐标。将图像坐标系上的点在 x 和 y 轴方向上分别缩放 m_x 倍和 m_y,在分别平移 p_x 和 p_y 个点,调整后的矩阵变为: ?...其中 f_x = f*m_x,f_y=f*m_y,有时也写作\alpha_x,\alpha_y。 上式中,等式右边的第一个矩阵就是相机的内参矩阵 K: ?...上图第一行给出了使用的测试数据的例子,从左到右依此为具有各种视点的图像和纹理水平从高到低的图像。测试结果很有意思——3D-R2N2 和 Patch-Match 算法的优缺点几乎是完全相反的。

    1.4K40

    深度学习之卷积神经网络

    :假设输入形状是 nh×nw ,卷积核窗口形状是 kh×kw ,那么输出形状: 高 = (nh−kh+1); 宽 = (nw−kw+1); 二维卷积层 在这一层中将输入和卷积核做互相关运算,并加上一个标量偏差来得到输出...⌊(nh−kh+ph+sh)/sh⌋×⌊(nw−kw+pw+sw)/sw⌋; 小结 填充可以增加输出的高和宽,常用于使输入输出具有相同高和宽; 步幅可以减小输出的高和宽; 相关代码 """ 填充 """...X.shape) Y = conv2d(X) return Y.reshape(Y.shape[2:]) # 排除不关心的前两维:批量和通道 # 注意这里是两侧分别填充1行或列,所以在两侧一共填充...2行或列 conv2d = nn.Conv2D(1, kernel_size=3, padding=1) X = nd.random.uniform(shape=(8, 8)) print("卷积核高宽相同时输出形状...=(5, 3), padding=(2, 1)) print("卷积核高宽不同时输出形状") print(comp_conv2d(conv2d, X).shape) """ 步幅 """ # 高和宽的步幅均为

    73020

    【深度学习基础】预备知识 | 线性代数

    当矩阵具有相同数量的行和列时,其形状将变为正方形;因此,它被称为方阵(square matrix)。   ...例如,从按元素操作的定义中可以注意到,任何按元素的一元运算都不会改变其操作数的形状。同样,给定具有相同形状的任意两个张量,任何按元素二元运算的结果都将是相同形状的张量。...因此,输入轴1的维数在输出形状中消失。...\mathbf{x},\mathbf{y}\rangle )是相同位置的按元素乘积的和: \mathbf{x}^\top \mathbf{y} = \sum_{i=1}^{d} x_i y_i 。...当我们为矩阵A和向量x调用torch.mv(A, x)时,会执行矩阵-向量积。注意,A的列维数(沿轴1的长度)必须与x的维数(其长度)相同。

    7700

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

    , int64, complex64, complex128的张量; y: 一个类型跟张量x相同的张量; 返回值: x * y element-wise; 注意: multiply这个函数实现的是元素级别的相乘...两个相乘的数必须有相同的数据类型,不然就会报错。...a和b除了最后两个维度可以不一致,其他维度要相同; a和b最后两维的维度要符合矩阵乘法的要求(比如a的(3,4)能和b的(4,6)进行矩阵乘法); 比如 a的维度是(2,2,3); b的维度是(2,3,...2); 第一维 2 相同, 最后两维 满足矩阵乘法要求,一个是(i,j),另一个必须是(j,k)。...正常情况下,当你想要进行一些操作如加法,乘法时,你需要确保操作数的形状是相匹配的,如:你不能将一个具有形状[3, 2]的张量和一个具有[3,4]形状的张量相加。

    1.7K20

    NumPy 基础知识 :1~5

    因此,现在y不再是x的视图/参考; 它是一个独立的数组,但具有与x相同的值。...x和y完全相同:都是numpy.int32数组,范围从1到8(如果使用 64 位计算机,则可能会得到numpy.int64)并除以float 10.0。...x变量的形状为(3, 3),而y的形状仅为 3。但是在 NumPy 广播中,y的形状转换为1x3; 因此,该规则的第二个条件已得到满足。 通过重复将y广播到x的相同形状。 +操作可以按元素应用。...尽管x和y具有相同的形状,但y中的每个元素彼此相距 800 个字节。 使用 NumPy 数组x和y时,您可能不会注意到索引的差异,但是内存布局确实会影响性能。...x和y都具有5,000 x 5,000元素,但是x是二维ndarray,而y将其转换为相同的形状matrix。 即使计算已通过 NumPy 优化,NumPy 矩阵也将始终以矩阵方式进行运算。

    5.7K10

    tf.sparse

    例如,indexes =[[1,3],[2,4]]指定索引为[1,3]和[2,4]的元素具有非零值。indices:任何类型的一维张量和dense_shape [N],它为索引中的每个元素提供值。...当构造稀疏张量对象时,这并不是强制的,但是大多数ops都假定正确的顺序。如果稀疏张量st的序错了,可以通过调用tf.sparse.reorder(st)得到一个固定的版本。...一维。N个与sp_indices对应的非空值。sp_shape: int64类型的张量。一维。输入稀疏量的形状。dense:张量。必须具有与sp_values相同的类型。r d。稠密张量操作数。...name:操作的名称(可选)。返回值:一个张量。具有与sp_values相同的类型。4、__mul____mul__( sp_x, y)分量方向上,稀疏张量乘以稠密张量。...一维。N个与sp_indices对应的非空值。sp_shape: int64类型的张量。一维。输入稀疏量的形状。dense:张量。必须具有与sp_values相同的类型。r d。稠密张量操作数。

    1.9K20

    从零开始学Pytorch(七)之卷积神经网络基础

    二维卷积层 二维卷积层将输入和卷积核做互相关运算,并加上一个标量偏置来得到输出。卷积层的模型参数包括卷积核和标量偏置。...Image Name 图3 高和宽上步幅分别为3和2的二维互相关运算 一般来说,当高上步幅为 s_h ,宽上步幅为 s_w 时,输出形状为: 如果 p_h=k_h-1 , p_w=k_w-1 ,那么输出形状将简化为...当 p_h = p_w = p 时,我们称填充为 p ;当 s_h = s_w = s 时,我们称步幅为 s 。 多输入通道和多输出通道 之前的输入和输出都是二维数组,但真实数据的维度经常更高。...输入和输出具有相同的高和宽 1 \times 1 卷积核可在不改变高宽的情况下,调整通道数。 1 \times 1 卷积核不识别高和宽维度上相邻元素构成的模式,其主要计算发生在通道维上。...Image Name 图6 池化窗口形状为 2 x 2 的最大池化 二维平均池化的工作原理与二维最大池化类似,但将最大运算符替换成平均运算符。

    78220

    AI框架跟计算图什么关系?PyTorch如何表达计算图?

    指一个同时具有大小和方向,且满足平行四边形法则的几何對象。理论数学中向量的定义为任何在稱為向量空间的代數結構中的元素。...AI 框架对张量的表示主要有以下几个重要因素:元素数据类型:在一个张量中,所有元素具有相同的数据类型,如整型,浮点型,布尔型,字符型等数据类型格式形状:张量每个维度具有固定的大小,其形状是一个整型数的元组...下面以简单的数学公式 $z = x + y$ 为例,可以绘制上述方程的计算图如下:图片上面的计算图具有一个三个节点,分别代表张量数据中的两个输入变量 x 和 y 以及一个输出 z。...第一层含义是:计算图的正向传播是立即执行的。无需等待完整的计算图创建完毕,每条语句都会在计算图中动态添加节点和边,并立即执行正向传播得到计算结果。...# relu现在也可以具有正向传播和反向传播功能relu = MyReLU.applyY_hat = relu(X@w.t() + b)loss = torch.mean(torch.pow(Y_hat-Y

    86430

    卷积神经网络究竟做了什么?

    这些功能很单一:具有给定权重和偏差的层将始终为给定输入生成相同的输出,对经典的卷积神经网络来说是这样。 [手绘网络] 这个小型网络包含四个卷积层,四个最大池化层,两个全连接层。...它们都是张量的变体形式,我可以稍微讨论一下: 张量 就我们的目的而言,张量是一个多维数组,矢量和矩阵是其中的特殊情况。张量具有形状(我们先不用维度的概念)。...了解张量的形状是不够的:我们也必须知道哪个索引是哪个属性。...假如这一层输入的维度是32*32*3,卷积核的维度是5*5*3(这里,5*5两个维度可以随意设计,但是3是固定的,因为输入数据的第三维度的值是3),那么得到的输入应该是28*28*1的。...in[y][x][c]; } } } 为什么要这样?

    2.5K80

    Unity基础系列(三)——数学表面(数字雕刻)

    最后得到的正弦波的形状保持不变,但只有先前的一半大小。 ? 这个给定的函数我们也可以用公式来表达 。 ? 当正弦函数的正极值和负极值均为1和?1时,这个新函数的最大值和最小值将分别为1.5和?1.5。...当x变得等于分辨率时,一行就完成了,所以可以在循环顶部的if块来处理这个问题。然后用x代替i来计算X坐标。 ? 接下来,每一行必须沿Z维偏移。这也可以通过向for循环中添加一个z变量来完成。...50的分辨率,它就有2500点。100的分辨率,它有1万点。如果只是单独一个窗口你的电脑应该没问题,但当游戏和场景窗口同时可见时,它可能会很有些困难,因为这会使工作量增加一倍。...如果两个点有相同的X和Z坐标,那它就不能再拥有相同的Y坐标了,这是2D的局限,意味着表面的曲率是有限定的。它们的边不能垂直,也不能向后折叠。要避免这点,现在,函数不仅要输出Y,还要输出X和Z。...但现在它必须返回一个向量类型了,直接使用x和z作为其X和Z坐标,同时计算Y坐标。 ? 对Sine2DFunction进行同样的更改。 ? 调整其他三种函数方法。 ? ? ?

    1.6K40

    Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(九)

    经过正向模式自动微分后,我们得到右侧的图,表示偏导数∂g/∂x = 0 + (0 × x + y × 1) = y(我们可以类似地得到关于y的偏导数)。...图 B-2 显示了使用双重数计算f(x, y)对x在x = 3 和y = 4 时的偏导数(我将写为∂f/∂x (3, 4))。...您还必须指定dtype,并且所有元素必须与写入数组的第一个元素具有相同的形状。...它会自动填充最短的记录,以确保批次中的所有记录具有相同的形状。 PriorityQueue 一个按优先级顺序出队记录的队列。优先级必须作为每个记录的第一个元素包含在其中,是一个 64 位整数。...) @tf.function def increment(c=1): return counter.assign_add(c) TF 函数将将其视为隐式的第一个参数,因此实际上最终会具有相同的签名

    18200

    张量 101

    本来一开始是想讲张量求导 (tensor derivative) 和计算图 (computational graph) 的,但讲这个必须把张量要讲清楚吧。后来解释张量一发不可收拾写成了完整一贴。...import tensorflow as tf tf.Tensor 由以下两个特征定义: 数据类型 (data type),包括整数、浮点数和字符等 形状 (shape) Tensor 中的每个元素都具有相同而其已知的数据类型...[1]) 和 y 第一个维度的元素 (y.shape[0]) 个数相等时,np.dot(X, Y) 才有意义,点乘得到的结果形状= (X.shape[0], y.shape[1])。...例四:当 x 是 3D 张量,y 是 1D 张量,np.dot(x, y) 是将 x 和 y 最后一维的元素相乘并加总。...例五:当 x 是 3D 张量,y 是 2D 张量,np.dot(x, y) 是将 x 的最后一维和 y 的倒数第二维的元素相乘并加总。

    2.9K20
    领券