Mean#

  • Domain: ai.onnx

  • Since version: 13

Element-wise mean of each of the input tensors (with Numpy-style broadcasting support). All inputs and outputs must have the same data type.

This operator supports multidirectional (i.e., Numpy-style) broadcasting; for more details please check the doc.

Inputs

  • data_0 (T): List of tensors for mean.

Outputs

  • mean (T): Output tensor.

Type Constraints

  • T: Constrain input and output types to float tensors. Allowed types: tensor(bfloat16), tensor(double), tensor(float), tensor(float16).

Examples#

test_cc_mean_bcast

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(2, 2), dtype=float32
    [[1., 2.],
     [3., 4.]]
  data_1: shape=(), dtype=float32
    10.

Outputs:
  result: shape=(2, 2), dtype=float32
    [[5.5, 6. ],
     [6.5, 7. ]]

test_cc_mean_column_row_scalar_double_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(2, 1), dtype=float64
    [[0.],
     [3.]]
  data_1: shape=(3,), dtype=float64
    [3., 6., 9.]
  data_2: shape=(), dtype=float64
    3.

Outputs:
  result: shape=(2, 3), dtype=float64
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_column_row_scalar_float_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(2, 1), dtype=float32
    [[0.],
     [3.]]
  data_1: shape=(3,), dtype=float32
    [3., 6., 9.]
  data_2: shape=(), dtype=float32
    3.

Outputs:
  result: shape=(2, 3), dtype=float32
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_crossed_dimensions_double_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(2, 1), dtype=float64
    [[2.],
     [4.]]
  data_1: shape=(1, 3), dtype=float64
    [[2., 4., 6.]]

Outputs:
  result: shape=(2, 3), dtype=float64
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_crossed_dimensions_float_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(2, 1), dtype=float32
    [[2.],
     [4.]]
  data_1: shape=(1, 3), dtype=float32
    [[2., 4., 6.]]

Outputs:
  result: shape=(2, 3), dtype=float32
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_five_inputs

Node:
  Mean(data_0, data_1, data_2, data_3, data_4) -> (result)
Inputs:
  data_0: shape=(3,), dtype=float32
    [0., 1., 0.]
  data_1: shape=(3,), dtype=float32
    [1., 2., 2.]
  data_2: shape=(3,), dtype=float32
    [2., 3., 4.]
  data_3: shape=(3,), dtype=float32
    [3., 4., 6.]
  data_4: shape=(3,), dtype=float32
    [4., 5., 8.]

Outputs:
  result: shape=(3,), dtype=float32
    [2., 3., 4.]

test_cc_mean_scalar_first_double_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(), dtype=float64
    2.
  data_1: shape=(2, 2), dtype=float64
    [[2., 4.],
     [6., 8.]]

Outputs:
  result: shape=(2, 2), dtype=float64
    [[2., 3.],
     [4., 5.]]

test_cc_mean_scalar_first_float_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(), dtype=float32
    2.
  data_1: shape=(2, 2), dtype=float32
    [[2., 4.],
     [6., 8.]]

Outputs:
  result: shape=(2, 2), dtype=float32
    [[2., 3.],
     [4., 5.]]

test_cc_mean_scalar_last_double_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(2, 2), dtype=float64
    [[2., 4.],
     [6., 8.]]
  data_1: shape=(), dtype=float64
    2.

Outputs:
  result: shape=(2, 2), dtype=float64
    [[2., 3.],
     [4., 5.]]

test_cc_mean_scalar_last_float_opset_13

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(2, 2), dtype=float32
    [[2., 4.],
     [6., 8.]]
  data_1: shape=(), dtype=float32
    2.

Outputs:
  result: shape=(2, 2), dtype=float32
    [[2., 3.],
     [4., 5.]]

test_cc_mean_scalar_row_column_double_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(), dtype=float64
    3.
  data_1: shape=(3,), dtype=float64
    [3., 6., 9.]
  data_2: shape=(2, 1), dtype=float64
    [[0.],
     [3.]]

Outputs:
  result: shape=(2, 3), dtype=float64
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_scalar_row_column_float_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(), dtype=float32
    3.
  data_1: shape=(3,), dtype=float32
    [3., 6., 9.]
  data_2: shape=(2, 1), dtype=float32
    [[0.],
     [3.]]

Outputs:
  result: shape=(2, 3), dtype=float32
    [[2., 3., 4.],
     [3., 4., 5.]]

test_cc_mean_successive_rank_expansion_double_opset_13

Node:
  Mean(data_0, data_1, data_2, data_3) -> (result)
Inputs:
  data_0: shape=(), dtype=float64
    4.
  data_1: shape=(3,), dtype=float64
    [0., 4., 8.]
  data_2: shape=(2, 1), dtype=float64
    [[0.],
     [4.]]
  data_3: shape=(2, 1, 1), dtype=float64
    [[[0.]],

     [[8.]]]

Outputs:
  result: shape=(2, 2, 3), dtype=float64
    [[[1., 2., 3.],
      [2., 3., 4.]],

     [[3., 4., 5.],
      [4., 5., 6.]]]

test_cc_mean_successive_rank_expansion_float_opset_13

Node:
  Mean(data_0, data_1, data_2, data_3) -> (result)
Inputs:
  data_0: shape=(), dtype=float32
    4.
  data_1: shape=(3,), dtype=float32
    [0., 4., 8.]
  data_2: shape=(2, 1), dtype=float32
    [[0.],
     [4.]]
  data_3: shape=(2, 1, 1), dtype=float32
    [[[0.]],

     [[8.]]]

Outputs:
  result: shape=(2, 2, 3), dtype=float32
    [[[1., 2., 3.],
      [2., 3., 4.]],

     [[3., 4., 5.],
      [4., 5., 6.]]]

test_cc_mean_two_scalars_column_double_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(), dtype=float64
    3.
  data_1: shape=(), dtype=float64
    6.
  data_2: shape=(2, 1), dtype=float64
    [[0.],
     [3.]]

Outputs:
  result: shape=(2, 1), dtype=float64
    [[3.],
     [4.]]

test_cc_mean_two_scalars_column_float_opset_13

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(), dtype=float32
    3.
  data_1: shape=(), dtype=float32
    6.
  data_2: shape=(2, 1), dtype=float32
    [[0.],
     [3.]]

Outputs:
  result: shape=(2, 1), dtype=float32
    [[3.],
     [4.]]

test_mean_example

Node:
  Mean(data_0, data_1, data_2) -> (result)
Inputs:
  data_0: shape=(3,), dtype=float32
    [3., 0., 2.]
  data_1: shape=(3,), dtype=float32
    [1., 3., 4.]
  data_2: shape=(3,), dtype=float32
    [2., 6., 6.]

Outputs:
  result: shape=(3,), dtype=float32
    [2., 3., 4.]

test_mean_one_input

Node:
  Mean(data_0) -> (result)
Inputs:
  data_0: shape=(3,), dtype=float32
    [3., 0., 2.]

Outputs:
  result: shape=(3,), dtype=float32
    [3., 0., 2.]

test_mean_two_inputs

Node:
  Mean(data_0, data_1) -> (result)
Inputs:
  data_0: shape=(3,), dtype=float32
    [3., 0., 2.]
  data_1: shape=(3,), dtype=float32
    [1., 3., 4.]

Outputs:
  result: shape=(3,), dtype=float32
    [2. , 1.5, 3. ]

Differences with previous version (8)#

SchemaDiff: Mean (domain 'ai.onnx')

  • old version: 8

  • new version: 13

  • breaking: no

Type constraints:

  • changed ‘T’: added types: [‘tensor(bfloat16)’]

Version History#