op_einsum: Evaluates the Einstein summation convention on the operands.

op_einsumR Documentation

Evaluates the Einstein summation convention on the operands.

Description

Evaluates the Einstein summation convention on the operands.

Usage

op_einsum(subscripts, ...)

Arguments

subscripts

Specifies the subscripts for summation as comma separated list of subscript labels. An implicit (classical Einstein summation) calculation is performed unless the explicit indicator ⁠->⁠ is included as well as subscript labels of the precise output form.

...

The operands to compute the Einstein sum of as unnamed arguments. Additional named arguments are forwarded to the underlying backend.

Value

The calculation based on the Einstein summation convention.

Examples

a <- op_arange(25) |> op_reshape(c(5, 5))
b <- op_arange(5)
c <- op_arange(6) |> op_reshape(c(2, 3))

Trace of a matrix:

op_einsum("ii", a)
op_trace(a)
## tf.Tensor(65.0, shape=(), dtype=float32)
## tf.Tensor(65.0, shape=(), dtype=float32)

Extract the diagonal:

op_einsum("ii -> i", a)
op_diag(a)
## tf.Tensor([ 1.  7. 13. 19. 25.], shape=(5), dtype=float32)
## tf.Tensor([ 1.  7. 13. 19. 25.], shape=(5), dtype=float32)

Sum over an axis:

op_einsum("ij -> i", a)
op_sum(a, axis = 2)
## tf.Tensor([ 15.  40.  65.  90. 115.], shape=(5), dtype=float32)
## tf.Tensor([ 15.  40.  65.  90. 115.], shape=(5), dtype=float32)

For higher dimensional tensors summing a single axis can be done with ellipsis:

op_einsum("...j -> ...", a)
op_sum(a, axis = -1)
## tf.Tensor([ 15.  40.  65.  90. 115.], shape=(5), dtype=float32)
## tf.Tensor([ 15.  40.  65.  90. 115.], shape=(5), dtype=float32)

Compute a matrix transpose or reorder any number of axes:

op_einsum("ji", c) # return c unchanged
## tf.Tensor(
## [[1. 2. 3.]
##  [4. 5. 6.]], shape=(2, 3), dtype=float32)

op_einsum("ij -> ji", c) # transpose
op_transpose(c)          # same as above
## tf.Tensor(
## [[1. 4.]
##  [2. 5.]
##  [3. 6.]], shape=(3, 2), dtype=float32)
## tf.Tensor(
## [[1. 4.]
##  [2. 5.]
##  [3. 6.]], shape=(3, 2), dtype=float32)

Matrix vector multiplication:

op_einsum("ij, j", a, b)
op_einsum("...j, j", a, b)
a %*% b
op_matmul(a, b)
## tf.Tensor([ 55. 130. 205. 280. 355.], shape=(5), dtype=float32)
## tf.Tensor([ 55. 130. 205. 280. 355.], shape=(5), dtype=float32)
## tf.Tensor([ 55. 130. 205. 280. 355.], shape=(5), dtype=float32)
## tf.Tensor([ 55. 130. 205. 280. 355.], shape=(5), dtype=float32)

See Also

Other numpy ops:
op_abs()
op_add()
op_all()
op_angle()
op_any()
op_append()
op_arange()
op_arccos()
op_arccosh()
op_arcsin()
op_arcsinh()
op_arctan()
op_arctan2()
op_arctanh()
op_argmax()
op_argmin()
op_argpartition()
op_argsort()
op_array()
op_average()
op_bartlett()
op_bincount()
op_bitwise_and()
op_bitwise_invert()
op_bitwise_left_shift()
op_bitwise_not()
op_bitwise_or()
op_bitwise_right_shift()
op_bitwise_xor()
op_blackman()
op_broadcast_to()
op_cbrt()
op_ceil()
op_clip()
op_concatenate()
op_conj()
op_copy()
op_corrcoef()
op_correlate()
op_cos()
op_cosh()
op_count_nonzero()
op_cross()
op_ctc_decode()
op_cumprod()
op_cumsum()
op_deg2rad()
op_diag()
op_diagflat()
op_diagonal()
op_diff()
op_digitize()
op_divide()
op_divide_no_nan()
op_dot()
op_empty()
op_equal()
op_exp()
op_exp2()
op_expand_dims()
op_expm1()
op_eye()
op_flip()
op_floor()
op_floor_divide()
op_full()
op_full_like()
op_get_item()
op_greater()
op_greater_equal()
op_hamming()
op_hanning()
op_heaviside()
op_histogram()
op_hstack()
op_identity()
op_imag()
op_inner()
op_isclose()
op_isfinite()
op_isinf()
op_isnan()
op_kaiser()
op_left_shift()
op_less()
op_less_equal()
op_linspace()
op_log()
op_log10()
op_log1p()
op_log2()
op_logaddexp()
op_logdet()
op_logical_and()
op_logical_not()
op_logical_or()
op_logical_xor()
op_logspace()
op_lstsq()
op_matmul()
op_max()
op_maximum()
op_mean()
op_median()
op_meshgrid()
op_min()
op_minimum()
op_mod()
op_moveaxis()
op_multiply()
op_nan_to_num()
op_ndim()
op_negative()
op_nonzero()
op_not_equal()
op_ones()
op_ones_like()
op_outer()
op_pad()
op_power()
op_prod()
op_quantile()
op_ravel()
op_real()
op_reciprocal()
op_repeat()
op_reshape()
op_right_shift()
op_roll()
op_rot90()
op_round()
op_saturate_cast()
op_select()
op_sign()
op_signbit()
op_sin()
op_sinh()
op_size()
op_sort()
op_split()
op_sqrt()
op_square()
op_squeeze()
op_stack()
op_std()
op_subtract()
op_sum()
op_swapaxes()
op_take()
op_take_along_axis()
op_tan()
op_tanh()
op_tensordot()
op_tile()
op_trace()
op_transpose()
op_tri()
op_tril()
op_triu()
op_trunc()
op_var()
op_vdot()
op_vectorize()
op_view_as_complex()
op_view_as_real()
op_vstack()
op_where()
op_zeros()
op_zeros_like()

Other ops:
op_abs()
op_add()
op_all()
op_angle()
op_any()
op_append()
op_arange()
op_arccos()
op_arccosh()
op_arcsin()
op_arcsinh()
op_arctan()
op_arctan2()
op_arctanh()
op_argmax()
op_argmin()
op_argpartition()
op_argsort()
op_array()
op_associative_scan()
op_average()
op_average_pool()
op_bartlett()
op_batch_normalization()
op_binary_crossentropy()
op_bincount()
op_bitwise_and()
op_bitwise_invert()
op_bitwise_left_shift()
op_bitwise_not()
op_bitwise_or()
op_bitwise_right_shift()
op_bitwise_xor()
op_blackman()
op_broadcast_to()
op_cast()
op_categorical_crossentropy()
op_cbrt()
op_ceil()
op_celu()
op_cholesky()
op_clip()
op_concatenate()
op_cond()
op_conj()
op_conv()
op_conv_transpose()
op_convert_to_numpy()
op_convert_to_tensor()
op_copy()
op_corrcoef()
op_correlate()
op_cos()
op_cosh()
op_count_nonzero()
op_cross()
op_ctc_decode()
op_ctc_loss()
op_cumprod()
op_cumsum()
op_custom_gradient()
op_deg2rad()
op_depthwise_conv()
op_det()
op_diag()
op_diagflat()
op_diagonal()
op_diff()
op_digitize()
op_divide()
op_divide_no_nan()
op_dot()
op_dot_product_attention()
op_dtype()
op_eig()
op_eigh()
op_elu()
op_empty()
op_equal()
op_erf()
op_erfinv()
op_exp()
op_exp2()
op_expand_dims()
op_expm1()
op_extract_sequences()
op_eye()
op_fft()
op_fft2()
op_flip()
op_floor()
op_floor_divide()
op_fori_loop()
op_full()
op_full_like()
op_gelu()
op_get_item()
op_glu()
op_greater()
op_greater_equal()
op_hamming()
op_hanning()
op_hard_shrink()
op_hard_sigmoid()
op_hard_silu()
op_hard_tanh()
op_heaviside()
op_histogram()
op_hstack()
op_identity()
op_ifft2()
op_imag()
op_image_affine_transform()
op_image_crop()
op_image_extract_patches()
op_image_gaussian_blur()
op_image_hsv_to_rgb()
op_image_map_coordinates()
op_image_pad()
op_image_perspective_transform()
op_image_resize()
op_image_rgb_to_grayscale()
op_image_rgb_to_hsv()
op_in_top_k()
op_inner()
op_inv()
op_irfft()
op_is_tensor()
op_isclose()
op_isfinite()
op_isinf()
op_isnan()
op_istft()
op_kaiser()
op_layer_normalization()
op_leaky_relu()
op_left_shift()
op_less()
op_less_equal()
op_linspace()
op_log()
op_log10()
op_log1p()
op_log2()
op_log_sigmoid()
op_log_softmax()
op_logaddexp()
op_logdet()
op_logical_and()
op_logical_not()
op_logical_or()
op_logical_xor()
op_logspace()
op_logsumexp()
op_lstsq()
op_lu_factor()
op_map()
op_matmul()
op_max()
op_max_pool()
op_maximum()
op_mean()
op_median()
op_meshgrid()
op_min()
op_minimum()
op_mod()
op_moments()
op_moveaxis()
op_multi_hot()
op_multiply()
op_nan_to_num()
op_ndim()
op_negative()
op_nonzero()
op_norm()
op_normalize()
op_not_equal()
op_one_hot()
op_ones()
op_ones_like()
op_outer()
op_pad()
op_polar()
op_power()
op_prod()
op_psnr()
op_qr()
op_quantile()
op_ravel()
op_real()
op_rearrange()
op_reciprocal()
op_relu()
op_relu6()
op_repeat()
op_reshape()
op_rfft()
op_right_shift()
op_rms_normalization()
op_roll()
op_rot90()
op_round()
op_rsqrt()
op_saturate_cast()
op_scan()
op_scatter()
op_scatter_update()
op_searchsorted()
op_segment_max()
op_segment_sum()
op_select()
op_selu()
op_separable_conv()
op_shape()
op_sigmoid()
op_sign()
op_signbit()
op_silu()
op_sin()
op_sinh()
op_size()
op_slice()
op_slice_update()
op_slogdet()
op_soft_shrink()
op_softmax()
op_softplus()
op_softsign()
op_solve()
op_solve_triangular()
op_sort()
op_sparse_categorical_crossentropy()
op_sparse_plus()
op_sparse_sigmoid()
op_sparsemax()
op_split()
op_sqrt()
op_square()
op_squareplus()
op_squeeze()
op_stack()
op_std()
op_stft()
op_stop_gradient()
op_subset()
op_subtract()
op_sum()
op_svd()
op_swapaxes()
op_switch()
op_take()
op_take_along_axis()
op_tan()
op_tanh()
op_tanh_shrink()
op_tensordot()
op_threshold()
op_tile()
op_top_k()
op_trace()
op_transpose()
op_tri()
op_tril()
op_triu()
op_trunc()
op_unravel_index()
op_unstack()
op_var()
op_vdot()
op_vectorize()
op_vectorized_map()
op_view_as_complex()
op_view_as_real()
op_vstack()
op_where()
op_while_loop()
op_zeros()
op_zeros_like()


keras3 documentation built on Dec. 22, 2025, 5:07 p.m.