假设我有两个矩阵:
A: size k x m
B: size m x n
使用自定义操作,我的输出将是k x n.
此自定义操作不是行之间的点积A
和列B
. Suppose该自定义操作定义为:
对于第 I 行A
和第 J 列B
, the i,j
输出的元素是:
sum( (a[i] + b[j]) ^20 ), i loop over I, j loops over J
我认为实现这一点的唯一方法是扩展这个方程,计算每一项,然后将它们相加。
numpy 或 pytorch 有没有办法在不扩展方程的情况下做到这一点?
除了评论中@hpaulj 概述的方法之外,您还可以使用以下事实:您计算的本质上是成对的 Minkowski 距离:
import numpy as np
from scipy.spatial.distance import cdist
k,m,n = 10,20,30
A = np.random.random((k,m))
B = np.random.random((m,n))
method1 = ((A[...,None]+B)**20).sum(axis=1)
method2 = cdist(A,-B.T,'m',p=20)**20
np.allclose(method1,method2)
# True
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)