使用 Einsum 执行简单的自定义操作

Performing simple custom operations with Einsum

我是 Einsum 的新手,想要一个特殊案例 - 使用 einsum 将矩阵的所有元素相互相乘;假设给定一个 2D 矩阵:-

np.random.rand((16,2))

将轴上的元素相乘得到 (16,),然后将它们再次相乘得到 (1,) 标量。这类似于:-

[[1, 2],  ==> [2, 12] ==> 24
 [3, 4]]

我尝试使用类似的东西:-

...("ij->")

但这绝对不是我想要的,因为它不是乘法

我们如何用einsum写出这么简单的操作? einsum 可以不处理每一个操作,而是针对一些困难的情况进行优化吗?

einops.reduce(x, 'i j -> i', 'prod')

应该能帮到你。

正如@neel-g 指出的那样,根据定义,einsum 是乘积之和。