chainer.functions.einsum¶
-
chainer.functions.einsum(*operands)[source]¶ Einstein summation
This function supports two formats of inputs:
einsum(subscripts, op0, op1, ...)einsum(op0, sublist0, op1, sublist1, ..., [sublistout])
See also
numpy.einsum()Example
The following example computes a batched application of a bilinear function with weight
w.>>> x1 = np.arange(12).reshape(3, 4).astype(np.float32) >>> x2 = np.arange(15).reshape(3, 5).astype(np.float32) >>> w = np.arange(120).reshape(4, 5, 6).astype(np.float32) >>> y = F.einsum('ij,ik,jkl->il', x1, x2, w) >>> y.shape (3, 6)
The batch axes can be denoted by
.... If the string of output subscripts is omitted, the summation is taken over the subscript alphabets with two (or more) occurrences.>>> np.allclose(y.array, F.einsum('...j,...k,jkl', x1, x2, w).array) True
In the other format:
>>> y = F.einsum(x1, [0, 1], x2, [0, 2], w, [1, 2, 3], [0, 3]) >>> y.shape (3, 6) >>> y = F.einsum(x1, [Ellipsis, 1], x2, [Ellipsis, 2], w, [1, 2, 3]) >>> y.shape (3, 6)