形状(ni * 43 * 91)x67のX行列と、形状67x43x91のWテンソルがあります。niは異なります
Xの最初のni行にWの最初の列を点在させて(ni * 43 * 91)ベクトルyを取得し、yの最初のni要素を取得し、Xの2番目のni行にWの2番目の列を取得する必要があります。 yの2番目のni要素など。Wの列がなくなったら、次の次元に進みます。
私は2つのマスクdim2とdim3を持っており、両方とも(ni * 43 * 91)の形をしています。今これは私がやっていることです(単純化されています)そしてそれは非常に遅いです
for d3 in range(91):
for d2 in range(43):
mask = ((dim3 == d3) & (dim2 == d2))
curr_X = X[mask, :]
curr_W = W[:,d2,d3]
curr_y = numpy.dot(curr_X,curr_W)
y[mask] = curr_y
forループなしでこれを行うことは可能ですか?