【发布时间】:2013-03-12 20:37:39
【问题描述】:
我有一个形状为 (ni*43*91)x67 的 X 矩阵和一个形状为 67x43x91 的 W 张量。不一样
我需要通过将 X 的前 ni 行与 W 的第一列点来获得一个 (ni*43*91) 向量 y,以获得 y 的前 ni 个元素和 X 的第二个 ni 行与第二列W 得到 y 的第二个 ni 元素,以此类推。当 W 中的列用完时,我会转到下一个维度继续。
我有两个面罩 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 循环,这可能吗?
【问题讨论】:
标签: python numpy vectorization