qfeval_functions.functions.einsum
- einsum(equation, *operands)[source]
Sums the product of tensor elements over specified indices using Einstein notation.
This function provides a typed wrapper around
torch.einsum, enabling better static type analysis. Einstein summation convention allows for expressing many tensor operations (including matrix multiplication, batch matrix multiplication, dot products, broadcasting, and more) in a compact notation.- Parameters:
equation (
str) – A string describing the subscripts for summation. The string contains comma-separated subscript labels for each operand, followed by->and the subscript labels for the output.*operands (
Tensor) – The input tensors to operate on. The number of operands must match the number of comma-separated groups in the equation.
- Returns:
The result of the Einstein summation, with shape determined by the output subscript labels in the equation.
- Return type:
Example
>>> # Matrix multiplication: "ij,jk->ik" >>> A = torch.randn(3, 4) >>> B = torch.randn(4, 5) >>> C = QF.einsum("ij,jk->ik", A, B) >>> C.shape torch.Size([3, 5])
>>> # Batch matrix multiplication: "bij,bjk->bik" >>> A = torch.randn(10, 3, 4) >>> B = torch.randn(10, 4, 5) >>> C = QF.einsum("bij,bjk->bik", A, B) >>> C.shape torch.Size([10, 3, 5])
>>> # Trace of a matrix: "ii->" >>> A = torch.tensor([[1.0, 2.0], [3.0, 4.0]]) >>> trace = QF.einsum("ii->", A) >>> trace tensor(5.)
>>> # Transpose: "ij->ji" >>> A = torch.randn(3, 4) >>> A_T = QF.einsum("ij->ji", A) >>> torch.allclose(A_T, A.T) True