Тензорный эквивалент einsum 'ij, ijk -> ik' - PullRequest
0 голосов
/ 05 августа 2020

Я использую не numpy, а Eigen :: Tensor C ++ API, в котором есть только операции сжатия, это просто для того, чтобы я мог продумать реализацию из python.

Итак 'ij, ijk - > ik 'в основном похож на выполнение для l oop для каждого из первых измерений.

a = np.random.uniform(size=[10, 4])
b = np.random.uniform(size=[10, 4, 4])
vec = []
for i in range(10):
  vec.append(a[i].dot(b[i]))
print(np.stack(vec, axis=0))
## or with einsum
print(np.einsum('ij,ijk->ik', a, b))

Это не может быть легко сделано с tenordot. Есть предложения?

...