我想從向量a和計算協方差矩陣b,比如k[i][j] = exp( -(a[i]-b[j])**2 )。
在numpy中,我可以這樣寫,
import numpy as np
r = np.subtract.outer(a, b)
k = np.exp(-r*r)
在 PyTorch 中,我可以撰寫簡單的代碼,但它比 numpy 慢。
import torch
for i in range(len(a)):
for j in range(len(b)):
k[i][j] = torch.exp( -(a[i]-b[j])**2 )
我應該如何使用 PyTorch 撰寫高效的代碼?
uj5u.com熱心網友回復:
您可以使用廣播:
r = a[:, None] - b[None, :]
k = torch.exp(-r**2)
uj5u.com熱心網友回復:
我會使用重塑和乘以 ndims 陣列的商品:
k = torch.exp(- (a.reshape(-1,1)*b.reshape(1,-1))**2)
編輯
此方法也適用于 numpy:
k = np.exp(- (a.reshape(-1,1)*b.reshape(1,-1))**2)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/346072.html
下一篇:組concat查詢性能
