mindscience.sciops.einsum.Einsum

class mindscience.sciops.einsum.Einsum(equation, use_opt=True)[source]

Einsum operation using Einstein summation convention.

This operator performs tensor computations using Einstein summation convention (Einsum). Supports diagonalization, reduction, transposition, matrix multiplication, product operations, inner products, etc.

Parameters
  • equation (str) –

    Specifies the computation to be performed. Only accepts:

    • Letters ([a-z][A-Z]): Represent dimensions of input tensors

    • …: anonymous dimensions

    • Commas (','): Separate tensor dimensions

    • Arrow ('->'): Left side specifies input tensors, right side specifies desired output dimensions

  • use_opt (bool, optional) – Defaults to True. When set to False, performs contraction path optimization.

Inputs:
  • operands (List[Tensor]): Variable number of tensor inputs.

Outputs:
  • out_tensor (Tensor): The result of the einsum operation.

Examples

>>> import mindspore as ms
>>> from mindspore import nn, Tensor, ops
>>> import numpy as np
>>> import Einsum
>>> x = Tensor(np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0]]), ms.float32)
>>> y = Tensor(np.array([[2.0, 3.0], [1.0, 2.0], [4.0, 5.0]]), ms.float32)
>>> equation = "ij,jk->ik"
>>> einsum = Einsum(equation, use_opt=False)
>>> output = einsum(x, y)
>>> print(output.shape)
(2, 2)
>>> shapes = [(156, 16, 16), (660, 128, 16), (660, 128, 16)]
>>> x, y, z = [ops.randn(tp) for tp in shapes]
>>> equation = "ijk,zui,zuj->zuk"
>>> einsum = Einsum(equation, use_opt=True)
>>> output = einsum(x, y, z)