n
和F
是维度为m * l * l
的三维矩阵,其中m
=5,l
=174。n
由乘以Fi-Fj的范数2的平方给出。这里的公式
我当前的蛮力实现是
for k in range(0,m):
for i in range(0,l):
for j in range(0,l):
dist = gamma*(np.linalg.norm(F[0][i] - F[0][j]))
m3.append(dist)
m2.append(m3)
m1.append(m2)
但是我的程序崩溃了。有没有一种优化的方法来计算它?
现在你的操作是使用3个嵌套的缓慢的python风格循环完成的。使用Numpy的强大功能,沿着倒数第一个轴广播并对操作进行矢量化:
n = gamma * np.sum((F[:,np.newaxis,:,:] - F[:,:,np.newaxis,:])**2, axis=-1)