我有以下问题:给定形状(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
操作不会分配新内存。这只是";技巧";你提到