张量与PyTorch之间的成对差



我有以下问题:给定形状(T,n,d(的两个张量X和形状(R,m,dt<T、 1<=r<R、 1<=i<n、 1<=j<m、

D[t,r,i,j]=X[t,i]-Y[r,j]

我们能在不使用任何循环的情况下用Pytorch计算D吗?

我知道,当给定形状为(n,d(的两个张量X和形状为(m,di<n、 1<=j<m、 使用的D[i,j]=X[i]-Y[j]

x.unsqueeze(1) - y

我正在寻找一个类似的技巧来解决最初的问题。

我认为以下片段可能会达到您的需求:

# reshapes X to (T, R, n, m, d)
X_rs = X.view(T, 1, n, 1, d).expand(-1, R, -1, m, -1) 
# reshapes Y to (T, R, n, m, d)
Y_rs = Y.view(1, R, 1, m, d).expand(T, -1, n, -1, -1)
# Compute the coefficient-wise difference
D = X_rs - Y_rs

请注意,expand操作不会分配新内存。这只是";技巧";你提到

最新更新