【发布时间】:2021-07-17 18:08:43
【问题描述】:
如何使用 numpy 有效地编写和计算这个乘法:
for k in range(K):
for i in range(SIZE):
for j in range(SIZE):
for i_b in range(B_SIZE):
for j_b in range(B_SIZE):
for k_b in range(k+1):
data[k, i * w + i_b, j * h + j_b] += arr1[k_b, i_b, j_b] * arr2[k_b, i, j]
例如:
SIZE, B_SIZE = 32, 8
arr1.shape -> (8, 8, 8)
arr2.shape -> (8, 32, 32)
data.shape -> (K, 256, 256)
谢谢。
【问题讨论】:
-
k和8是什么关系? -
似乎
einsum或matmul可以做到;至少有+=和*。但是 6 个迭代器之间的映射很复杂(并且需要太多的工作:()。
标签: numpy matrix optimization matrix-multiplication numpy-ndarray