问题标签 [tensordot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
pytorch - 置换后如何进行张量点运算
我有 2 个张量,A 和 B:
张量 D 来自操作“tensordot -> permute”。如何实现一个新的操作 f() 以在 f() 之后进行 tensordot 操作,例如:
python - 理解 numpy np.tensordot
我试图了解这个 tensordot 函数是如何工作的。我知道它返回张量点积。
但是轴部分对我来说有点难以理解。我所观察到的
对于 ans,它就像数组 arr1 中的列数和 arr2 中的行数构成最终矩阵。
对于 ans2,它与 arr2 中的列数和 arr1 中的行数相反
我不明白轴=([1,0],[0,1])。让我知道我对 ans 和 ans2 的理解是否正确
python - 使用 Tensordot 复制矩阵-矩阵乘法
在PyKeops
package中,没有可用的 Matrix-Matrix 乘法公式。相反,他们实现了类似于numpy.tensordot
. 我有两个A,B
大小矩阵m x n
和n x n
. 有什么方法可以复制A @ B
使用numpy.tensordot
.
numpy - NumPy Tensordot 轴=2
我知道有很多关于 tensordot 的问题,我已经浏览了一些 15 页的迷你书答案,我确信这些答案是人们花费数小时制作的,但我还没有找到关于什么的解释axes=2
。
这让我觉得np.tensordot(b,c,axes=2) == np.sum(b * c)
,但作为一个数组:
但后来这失败了:
如果有人可以提供一个简短、简洁的解释np.tensordot(x,y,axes=2)
,并且只有axes=2
,那么我很乐意接受。
python - Tensordot 在 Tensorflow 中的使用
在我的python Tensorflow代码中,我有一个尺寸为(201、25、25)的3d张量“a”和尺寸为(201、25)的2d张量“b”,我想计算产品a* b 其中,结果应在其第 i 行中包含使用 tensordot 方法计算的以下乘积。
tf.tensordot(a[i,:,:],b[i,:],1) // This product has dim of (25,)
有没有一种使用 tensordot 函数一次计算这个产品的好方法,我试过这样做,但我做不到。
arrays - 轴使用不同参数时如何理解 tf.tensordot?
我只是研究TensorFlow。并对 tensordot 感到困惑。例如,我的代码是:
基于 tf.tensordot 中不同的轴参数,结果是不同的。
虽然看了一些解释,但还是没看懂。它是如何工作的?
python - 使用tensordot无法重新创建具有“交错”输出索引的一行einsum函数?
tensordot
NumPy和函数之间的异同einsum
有据可查,并在本论坛中进行了广泛讨论(例如[1]、[2]、[3]、[4]、[5])。但是,我遇到了一个使用矩阵乘法的实例einsum
,我发现使用它进行复制非常困难,如果不是不可能的话tensordot
:如果我们的两个数组是,
是否存在tensordot
与以下内容等效的一行?
根据我的发现,答案似乎是“不”。问题出现在输出维度的索引中iajk
。在这里,a
arrayA
的维度出现在维度i
和j
array之间B
。如果输出维度的索引改为aijk
,np.tensordot(A, B, (1, 1))
则可以正常工作。为了确定,我使用所有可能的轴进行了测试,
并发现没有任何允许的轴组合产生预期的结果。请注意,B
将参数的每个元素的尺寸限制axes
为长度为 1。einsum
使用交错输出维度的函数不能在一行中重现是否正确tensordot
?如果是这样,是否存在多行解决方法?
python - 为什么在tensordot中没有保留痕迹
我正在尝试取三个密度矩阵的张量积并在乘积基础中表达它。这些矩阵中的每一个都有迹线 1,理论上,乘积矩阵也应该如此。但是在 numpy 中这样做似乎会产生一些意想不到的影响。即使将中间数组重塑为 2d 形式也会给出相同的答案。
我在这段代码中真的找不到任何错误,所以我觉得我误解了 tensordot 和 reshape 的工作原理。但我并没有真正从文档中得到任何东西。有人可以帮我解决这个问题吗?
python - 简化循环的 np.tensordot 表达式
目前,我的脚本如下所示:
我想在不使用 for 循环的情况下复制相同的行为,因为它可以并行完成。但是,我还没有找到使用 tensordot 函数执行此操作的简洁方法。有没有办法为这个操作创建一个单线?
python - 2 个 3D 张量之间的张量点维度
我对张量点操作有一个相当快速的问题。我试图弄清楚是否有一种方法可以在两个张量之间执行张量积以获得我想要的正确形状输出。其中一个张量是 BXLXD 维度,另一个是 BX 1 XD 维度,我试图弄清楚是否有可能最终得到 BXD 矩阵。
目前,我正在遍历 B 维并在 1 个 XD 和 DXL(转置 LXD)矩阵之间执行矩阵乘法并将它们堆叠到最后得到 BXL 矩阵。这显然不是最快的方法,因为循环可能很昂贵。是否可以通过执行快速张量点获得所需的 BXD 形状输出?我似乎无法找到摆脱其中一个 B 的方法。
任何见解或方向将不胜感激。