当前位置: 首页 > 知识库问答 >
问题:

Python:numpy。点/numpy。多维数组的tensordot

衡修洁
2023-03-14

我正在优化反向传播算法的实现,以训练神经网络。我正在研究的一个方面是在数据点集(输入/输出向量)上执行矩阵运算,这是一个由numpy库优化的批处理过程,而不是遍历每个数据点。

在我的原始算法中,我做了以下操作:

for datapoint in datapoints:
  A = ... (created out of datapoint info)
  B = ... (created out of datapoint info)

  C = np.dot(A,B.transpose())
____________________

A: (7,1) numpy array
B: (6,1) numpy array
C: (7,6) numpy array

然后,我将所述矩阵扩展为张量,其中第一个形状索引将引用数据集。如果我有3个数据集(为了简单起见),矩阵将如下所示:

A: (3,7,1) numpy array
B: (3,6,1) numpy array
C: (3,7,6) numpy array

仅使用np.tensordot或其他numpy操作,如何生成C?

我想答案应该是这样的:

C = np.tensordot(A.[some manipulation], B.[some manipulation], axes = (...))

(这是一个更复杂的应用程序的一部分,我构建事物的方式不再灵活。如果我找不到解决方案,我只会遍历数据集并为每个数据集执行乘法)

共有1个答案

湛嘉歆
2023-03-14

我们可以使用np。einsum -

c = np.einsum('ijk,ilm->ijl',a,b)

由于最后一个轴是单态的,所以最好使用切片数组-

c = np.einsum('ij,il->ijl',a[...,0],b[...,0])

使用<代码>np。matmul/@-运算符-

c = a@b.swapaxes(1,2)
 类似资料:
  • 问题内容: numpy中最简单的方法来反转数组的最内部值是这样的: 这样我得到以下结果: 非常感谢你! 问题答案: 怎么样: 而最后一个维度的反方向是: 要么 尽管我更喜欢后者,因为前两个维度是隐式的,因此很难看到正在发生的事情。

  • 问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的

  • 问题内容: 我有一个二维数组,即序列数组也是数组。对于每个序列,我想计算自相关,因此对于(5,4)数组,我将获得5个结果或维度为(5,7)的数组。 我知道我可以循环浏览第一个维度,但这很慢,也是我的最后选择。还有另一种方法吗? 谢谢! 编辑: 根据选择的答案以及mtrw的评论,我具有以下功能: 请注意,在我的代码中,length是一个全局变量,因此一定要声明它。我也没有将结果限制为实数,因为我还需

  • 因此,我正在编写一个数独解算器,使用9x9数组作为网格,使用9x9x9数组作为其可能性。由于我使用的回溯算法,我必须检查数独是否仍然有效,又名: 如果有一个字段不包含数字,并且没有剩余的可能性,则返回False。到目前为止,我实现了以下几点: 例如,如果(j,i)处的正方形包含选项2、3和7,则相应的可能性数组为: 我试图在求解器中避免这样的循环。我尝试如下: 这返回了一个nx9数组,其中n是我的

  • 本文向大家介绍python numpy 一维数组转变为多维数组的实例,包括了python numpy 一维数组转变为多维数组的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: 借助numpy库; 以上这篇python numpy 一维数组转变为多维数组的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 问题内容: 创建数组时,NumPy非常有用。如果for的第一个参数具有and方法,则根据它们可能是有效序列使用它们。 不幸的是,我想创建一个包含没有NumPy是“有用的”的数组。 分解为一个最小的示例,该类将如下所示: 如果“可迭代对象”的长度不同,那么一切都很好,而我得到的结果恰好是我想要的: 但是NumPy会创建一个多维数组,如果它们恰好具有相同的长度: 不幸的是,只有一个参数,所以我想知道是