赏金将在 3 天后到期。 此问题的答案有资格获得+500声望赏金。 Niteya Shah想让更多人关注这个问题: 一个可以生成最佳代码的工作实现,该代码由 GCC 或 clang 自动矢量化。 我想将以下 numpy einsum 写为 Eigen Tensor opimport numpy ...
赏金将在 3 天后到期。 此问题的答案有资格获得+500声望赏金。 Niteya Shah想让更多人关注这个问题: 一个可以生成最佳代码的工作实现,该代码由 GCC 或 clang 自动矢量化。 我想将以下 numpy einsum 写为 Eigen Tensor opimport numpy ...
令T和L为两批矩阵(MxN)和一个 function f(ti,lj)计算矩阵ti和lj的分数。 例如,如果T, L= torch.rand(4,3,2), torch.rand(4,3,2) # T = tensor([[[0.0017, 0.5781], # [0.8136, ...
谁能帮助我了解如何使用 EinsumDense 处理压缩/扩展张量的维数? 我有一个形状为(batch, horizon, features)的时间序列(不是 NLP)输入张量,其中预期输出为(1, H, F) ; H是任意水平, F是任意特征尺寸。 实际上,我在变压器编码器模块中使用Einsum ...
您好,有人可以帮我弄清楚如何使用 np.einsum 来生成以下代码的结果。 我有一个 (3,3,3) 张量,我想得到我使用两个 for 循环得到的结果。 我为生成此输出而编写的代码如下。 我正在尝试使用 np.einsum 来产生与在下面的代码中使用两个 for 循环所获得的相同结果。 我不熟悉使 ...
我有两个 PyTorch 张量。 一个是三阶,一个是四阶。 有没有办法让它产生第一个张量的等级和形状? 例如在这个交叉注意力位中: 是否有可以应用于 q、k、v 或 attn 的排列/转置,使我可以乘以 (2, 4, 24)? 我还没有找到一个。 我目前收到此错误:“RuntimeError: ei ...
我想以某种方式将两个 Tensorflow Arrays 相乘,如下面的代码所示: 有没有更优雅和更短的方法来做这种没有循环的乘法? 此外,我希望将最终产品放在单个 Tensorflow 阵列中,而不是在列表中。 在 Numpy 中,我可以使用以下命令实现上述目的,但不知何故它不适用于 Tensor ...
我正在尝试计算矢量化嵌套总和 (因此有效地对每一行k进行单独计算) 我想出的最快方法是定义一个下三角矩阵,以考虑内部和的范围 然后评估范围j=1..N的内部总和,允许使用点积 这很好用,但即使使用uint8数据类型, O也需要大量 memory 才能获得 N>>10000。 有没有更好 ...
我有一个 2 x 2 矩阵yy 和 n=3 x 4 x 2 矩阵xy 我想通过numpy.einsum在xy沿 0 轴的转置元素上乘以yy而无需循环得到 也就是说,每个第 i 个元素都应该是 如何使用numpy.einsum实现这一目标? ...
我有以下 einsum 表达式: np.einsum("abc,ab->ac",a,b) np.einsum("abc,abd->dc", a, b) 我需要转换为标准的 numpy 操作。 谁能帮我? ...
我正在阅读其他人的代码,但不确定 np.einsum 在这种情况下会做什么。 此代码输出形状为 (3, 3) 的数组。 任何帮助表示赞赏! ...
我正在尝试优化一段特定的代码,以矢量化的方式计算马氏距离。 我有一个使用传统 python 乘法的标准实现,以及另一个使用 einsum 的实现。 但是,令我惊讶的是 einsum 实现比标准 python 实现慢。 我在 einsum 中是否有什么效率低下的事情,或者是否有其他方法,例如我应该研究 ...
给定张量x和y ,每个都具有形状(num_batches, d) ,我如何使用 PyTorch 计算批次中x和y的每个组合的总和? 这类似于外积,除了我们不想相乘,而是求和。 (这意味着我可以通过求幂、外积和取对数来解决这个问题,但当然这在数值和性能上都有缺点)。 它可以通过笛卡尔积来完成,然 ...
我有一个奇怪的情况,我可以看到numpy.einsum加速计算,但在einsum_path不到相同的情况。 我想量化/解释这种可能的加速,但在某处遗漏了一些东西...... 简而言之,我有一个矩阵乘法,其中只需要最终产品的对角线。 产生输出: 在大型矩阵上运行时, numpy.einsum ...
我有一组要优化的收缩; 对于我使用 NumPy 模块中的np.einsum()的收缩。 最小的可重现示例在这里: 时间似乎约为 2 秒。 我也观察到einsum一般不是多线程的,而是使用单核的。 有没有其他有效的方法来执行这种收缩? (也许与 Numba 一起?)。 ...
我只是有一个基于np.sum的错误和一个等效的(或者至少我是这么认为的......) np.einsum命令没有给出相同的结果。 这是一个例子: 经过一番搜索,这是由于整数数据类型的溢出。 我的问题: 为什么np.einsum没有给出与np.sum相同的结果? 我觉得 np.sum 行为 ...
假设我有N个项目和一个值{0, 1}的多热向量,表示在结果中包含这些项目:N = 4 # items 1 and 3 will be included in the result vector = [0, 1, 0, 1] # item 2 will be included in the res ...
我想实现张量塔克积 st, 输入:形状为(m, n)的B ,形状为(n, n, n)的C (立方体)。 Output:形状为(m, m, m)的Y ,st Y_ijk = ∑_{0≤a,b,c<n} B_ia * B_jb * B_kc * C_abc 。 原始 for 循环代码:def ...
要旨基本上我想在 n 维张量上增加两个轴的维度。 出于某种原因,此操作在较大的张量上似乎非常慢。 如果有人能给我一个理由或更好的方法,我会很高兴。 目标从(4, 8, 8, 4, 4, 4, 4, 4, 16, 8, 4, 4, 1)到(4, 32, 8, 4, 4, 4, 4, 4, 4, 8, ...
使用 Numpy 是否有更有效的方法(无循环)?:for i, x in enumerate(array1): for j, y in enumerate(array2): result[i, j] = x + y 我试图使用 einsum 但没有成功。 谢谢 ! ...
我有这段代码: 而且我想使用 einsum 表示法来简化它(可能通过跳过 python 中的 for 循环来节省时间)。 然而,经过几次尝试,我最终不确定如何解决这个问题。 我目前的尝试是: 它没有达到与“for-loop”代码相同的结果。 ...