使用 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 是乘积之和。
我是 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 是乘积之和。