# ReduceMax#

## ReduceMax - 18#

Version

• name: ReduceMax (GitHub)

• domain: main

• since_version: 18

• function: False

• support_level: SupportType.COMMON

• shape inference: True

This version of the operator has been available since version 18.

Summary

Computes the max of the input tensor’s element along the provided axes. The resulting tensor has the same rank as the input if keepdims equals 1. If keepdims equals 0, then the resulting tensor has the reduced dimension pruned.

The above behavior is similar to numpy, with the exception that numpy defaults keepdims to False instead of True.

Attributes

• keepdims: Keep the reduced dimension or not, default 1 means keep reduced dimension. Default value is 1.

• noop_with_empty_axes: Defines behavior if ‘axes’ is empty. Default behavior with ‘false’ is to reduce all axes. When axes is empty and this attribute is set to true, input tensor will not be reduced,and the output tensor would be equivalent to input tensor. Default value is 0.

Inputs

Between 1 and 2 inputs.

• data (heterogeneous) - T: An input tensor.

• axes (optional, heterogeneous) - tensor(int64): Optional input list of integers, along which to reduce. The default is to reduce over all the dimensions of the input tensor if ‘noop_with_empty_axes’ is false, else act as an Identity op when ‘noop_with_empty_axes’ is true. Accepted range is [-r, r-1] where r = rank(data).

Outputs

• reduced (heterogeneous) - T: Reduced output tensor.

Type Constraints

• T in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(int8), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input and output types to high-precision and 8 bit numeric tensors.

Examples

_do_not_keepdims

shape = [3, 2, 2]
axes = np.array([1], dtype=np.int64)
keepdims = 0

node = onnx.helper.make_node(
"ReduceMax",
inputs=["data", "axes"],
outputs=["reduced"],
keepdims=keepdims,
)

data = np.array(
[[[5, 1], [20, 2]], [[30, 1], [40, 2]], [[55, 1], [60, 2]]],
dtype=np.float32,
)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)
# print(reduced)
# [[20., 2.]
# [40., 2.]
# [60., 2.]]

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_do_not_keepdims_example",
)

np.random.seed(0)
data = np.random.uniform(-10, 10, shape).astype(np.float32)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_do_not_keepdims_random",
)

_keepdims

shape = [3, 2, 2]
axes = np.array([1], dtype=np.int64)
keepdims = 1

node = onnx.helper.make_node(
"ReduceMax",
inputs=["data", "axes"],
outputs=["reduced"],
keepdims=keepdims,
)

data = np.array(
[[[5, 1], [20, 2]], [[30, 1], [40, 2]], [[55, 1], [60, 2]]],
dtype=np.float32,
)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)
# print(reduced)
# [[[20., 2.]]
# [[40., 2.]]
# [[60., 2.]]]

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_keepdims_example",
)

np.random.seed(0)
data = np.random.uniform(-10, 10, shape).astype(np.float32)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_keepdims_random",
)

_default_axes_keepdims

shape = [3, 2, 2]
axes = None
keepdims = 1
node = onnx.helper.make_node(
"ReduceMax", inputs=["data"], outputs=["reduced"], keepdims=keepdims
)

data = np.array(
[[[5, 1], [20, 2]], [[30, 1], [40, 2]], [[55, 1], [60, 2]]],
dtype=np.float32,
)
reduced = np.maximum.reduce(data, axis=axes, keepdims=keepdims == 1)

expect(
node,
inputs=[data],
outputs=[reduced],
name="test_reduce_max_default_axes_keepdim_example",
)

np.random.seed(0)
data = np.random.uniform(-10, 10, shape).astype(np.float32)
reduced = np.maximum.reduce(data, axis=axes, keepdims=keepdims == 1)

expect(
node,
inputs=[data],
outputs=[reduced],
name="test_reduce_max_default_axes_keepdims_random",
)

_negative_axes_keepdims

shape = [3, 2, 2]
axes = np.array([-2], dtype=np.int64)
keepdims = 1

node = onnx.helper.make_node(
"ReduceMax",
inputs=["data", "axes"],
outputs=["reduced"],
keepdims=keepdims,
)

data = np.array(
[[[5, 1], [20, 2]], [[30, 1], [40, 2]], [[55, 1], [60, 2]]],
dtype=np.float32,
)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)
# print(reduced)
# [[[20., 2.]]
# [[40., 2.]]
# [[60., 2.]]]

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_negative_axes_keepdims_example",
)

np.random.seed(0)
data = np.random.uniform(-10, 10, shape).astype(np.float32)
reduced = np.maximum.reduce(data, axis=tuple(axes), keepdims=keepdims == 1)

expect(
node,
inputs=[data, axes],
outputs=[reduced],
name="test_reduce_max_negative_axes_keepdims_random",
)

Differences

 0 0 Computes the max of the input tensor's element along the provided axes. The resulting Computes the max of the input tensor's element along the provided axes. The resulting 1 1 tensor has the same rank as the input if keepdims equals 1. If keepdims equals 0, then tensor has the same rank as the input if keepdims equals 1. If keepdims equals 0, then 2 2 the resulting tensor has the reduced dimension pruned. the resulting tensor has the reduced dimension pruned. 3 3 4 4 The above behavior is similar to numpy, with the exception that numpy defaults keepdims to The above behavior is similar to numpy, with the exception that numpy defaults keepdims to 5 5 False instead of True. False instead of True. 6 6 7 7 **Attributes** **Attributes** 8 8 9 * **keepdims**: 9 10 * **axes**: Keep the reduced dimension or not, default 1 means keep reduced 10 11 A list of integers, along which to reduce. The default is to reduce dimension. Default value is 1. 11 12 over all the dimensions of the input tensor. Accepted range is [-r, * **noop_with_empty_axes**: 12 13 r-1] where r = rank(data). Defines behavior if 'axes' is empty. Default behavior with 'false' 13 14 * **keepdims**: is to reduce all axes. When axes is empty and this attribute is set 14 Keep the reduced dimension or not, default 1 means keep reduced 15 15 dimension. Default value is 1. to true, input tensor will not be reduced,and the output tensor 16 would be equivalent to input tensor. Default value is 0. 16 17 17 18 **Inputs** **Inputs** 18 19 20 Between 1 and 2 inputs. 21 19 22 * **data** (heterogeneous) - **T**: * **data** (heterogeneous) - **T**: 23 An input tensor. 20 24 An input tensor. * **axes** (optional, heterogeneous) - **tensor(int64)**: 25 Optional input list of integers, along which to reduce. The default 26 is to reduce over all the dimensions of the input tensor if 27 'noop_with_empty_axes' is false, else act as an Identity op when 28 'noop_with_empty_axes' is true. Accepted range is [-r, r-1] where r 29 = rank(data). 21 30 22 31 **Outputs** **Outputs** 23 32 24 33 * **reduced** (heterogeneous) - **T**: * **reduced** (heterogeneous) - **T**: 25 34 Reduced output tensor. Reduced output tensor. 26 35 27 36 **Type Constraints** **Type Constraints** 28 37 29 38 * **T** in ( * **T** in ( 30 39 tensor(bfloat16), tensor(bfloat16), 31 40 tensor(double), tensor(double), 32 41 tensor(float), tensor(float), 33 42 tensor(float16), tensor(float16), 34 43 tensor(int32), tensor(int32), 35 44 tensor(int64), tensor(int64), 36 45 tensor(int8), tensor(int8), 37 46 tensor(uint32), tensor(uint32), 38 47 tensor(uint64), tensor(uint64), 39 48 tensor(uint8) tensor(uint8) 40 49 ): ): 41 50 Constrain input and output types to high-precision and 8 bit numeric Constrain input and output types to high-precision and 8 bit numeric 42 51 tensors. tensors.

## ReduceMax - 13#

Version

• name: ReduceMax (GitHub)

• domain: main

• since_version: 13

• function: False

• support_level: SupportType.COMMON

• shape inference: True

This version of the operator has been available since version 13.

Summary

Computes the max of the input tensor’s element along the provided axes. The resulting tensor has the same rank as the input if keepdims equals 1. If keepdims equals 0, then the resulting tensor has the reduced dimension pruned.

The above behavior is similar to numpy, with the exception that numpy defaults keepdims to False instead of True.

Attributes

• axes: A list of integers, along which to reduce. The default is to reduce over all the dimensions of the input tensor. Accepted range is [-r, r-1] where r = rank(data).

• keepdims: Keep the reduced dimension or not, default 1 means keep reduced dimension. Default value is 1.

Inputs

• data (heterogeneous) - T: An input tensor.

Outputs

• reduced (heterogeneous) - T: Reduced output tensor.

Type Constraints

• T in ( tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(int8), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input and output types to high-precision and 8 bit numeric tensors.

Differences

 0 0 Computes the max of the input tensor's element along the provided axes. The resulting Computes the max of the input tensor's element along the provided axes. The resulting 1 1 tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then tensor has the same rank as the input if keepdims equals 1. If keepdims equals 0, then 2 2 the resulted tensor have the reduced dimension pruned. the resulting tensor has the reduced dimension pruned. 3 3 4 4 The above behavior is similar to numpy, with the exception that numpy defaults keepdims to The above behavior is similar to numpy, with the exception that numpy defaults keepdims to 5 5 False instead of True. False instead of True. 6 6 7 7 **Attributes** **Attributes** 8 8 9 9 * **axes**: * **axes**: 10 10 A list of integers, along which to reduce. The default is to reduce A list of integers, along which to reduce. The default is to reduce 11 11 over all the dimensions of the input tensor. Accepted range is [-r, over all the dimensions of the input tensor. Accepted range is [-r, 12 12 r-1] where r = rank(data). r-1] where r = rank(data). 13 13 * **keepdims**: * **keepdims**: 14 14 Keep the reduced dimension or not, default 1 means keep reduced Keep the reduced dimension or not, default 1 means keep reduced 15 15 dimension. Default value is 1. dimension. Default value is 1. 16 16 17 17 **Inputs** **Inputs** 18 18 19 19 * **data** (heterogeneous) - **T**: * **data** (heterogeneous) - **T**: 20 20 An input tensor. An input tensor. 21 21 22 22 **Outputs** **Outputs** 23 23 24 24 * **reduced** (heterogeneous) - **T**: * **reduced** (heterogeneous) - **T**: 25 25 Reduced output tensor. Reduced output tensor. 26 26 27 27 **Type Constraints** **Type Constraints** 28 28 29 29 * **T** in ( * **T** in ( 30 tensor(bfloat16), 30 31 tensor(double), tensor(double), 31 32 tensor(float), tensor(float), 32 33 tensor(float16), tensor(float16), 33 34 tensor(int32), tensor(int32), 34 35 tensor(int64), tensor(int64), 35 36 tensor(int8), tensor(int8), 36 37 tensor(uint32), tensor(uint32), 37 38 tensor(uint64), tensor(uint64), 38 39 tensor(uint8) tensor(uint8) 39 40 ): ): 40 41 Constrain input and output types to high-precision and 8 bit numeric Constrain input and output types to high-precision and 8 bit numeric 41 42 tensors. tensors.

## ReduceMax - 12#

Version

• name: ReduceMax (GitHub)

• domain: main

• since_version: 12

• function: False

• support_level: SupportType.COMMON

• shape inference: True

This version of the operator has been available since version 12.

Summary

Computes the max of the input tensor’s element along the provided axes. The resulting tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then the resulted tensor have the reduced dimension pruned.

The above behavior is similar to numpy, with the exception that numpy defaults keepdims to False instead of True.

Attributes

• axes: A list of integers, along which to reduce. The default is to reduce over all the dimensions of the input tensor. Accepted range is [-r, r-1] where r = rank(data).

• keepdims: Keep the reduced dimension or not, default 1 means keep reduced dimension. Default value is 1.

Inputs

• data (heterogeneous) - T: An input tensor.

Outputs

• reduced (heterogeneous) - T: Reduced output tensor.

Type Constraints

• T in ( tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(int8), tensor(uint32), tensor(uint64), tensor(uint8) ): Constrain input and output types to high-precision and 8 bit numeric tensors.

Differences

 0 0 Computes the max of the input tensor's element along the provided axes. The resulting Computes the max of the input tensor's element along the provided axes. The resulting 1 1 tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then 2 2 the resulted tensor have the reduced dimension pruned. the resulted tensor have the reduced dimension pruned. 3 3 4 4 The above behavior is similar to numpy, with the exception that numpy defaults keepdims to The above behavior is similar to numpy, with the exception that numpy defaults keepdims to 5 5 False instead of True. False instead of True. 6 6 7 7 **Attributes** **Attributes** 8 8 9 9 * **axes**: * **axes**: 10 10 A list of integers, along which to reduce. The default is to reduce A list of integers, along which to reduce. The default is to reduce 11 11 over all the dimensions of the input tensor. Accepted range is [-r, over all the dimensions of the input tensor. Accepted range is [-r, 12 12 r-1] where r = rank(data). r-1] where r = rank(data). 13 13 * **keepdims**: * **keepdims**: 14 14 Keep the reduced dimension or not, default 1 means keep reduced Keep the reduced dimension or not, default 1 means keep reduced 15 15 dimension. Default value is 1. dimension. Default value is 1. 16 16 17 17 **Inputs** **Inputs** 18 18 19 19 * **data** (heterogeneous) - **T**: * **data** (heterogeneous) - **T**: 20 20 An input tensor. An input tensor. 21 21 22 22 **Outputs** **Outputs** 23 23 24 24 * **reduced** (heterogeneous) - **T**: * **reduced** (heterogeneous) - **T**: 25 25 Reduced output tensor. Reduced output tensor. 26 26 27 27 **Type Constraints** **Type Constraints** 28 28 29 29 * **T** in ( * **T** in ( 30 30 tensor(double), tensor(double), 31 31 tensor(float), tensor(float), 32 32 tensor(float16), tensor(float16), 33 33 tensor(int32), tensor(int32), 34 34 tensor(int64), tensor(int64), 35 tensor(int8), 35 36 tensor(uint32), tensor(uint32), 36 37 tensor(uint64) tensor(uint64), 38 tensor(uint8) 37 39 ): ): 38 40 Constrain input and output types to high-precision numeric tensors. Constrain input and output types to high-precision and 8 bit numeric 41 tensors.

## ReduceMax - 11#

Version

• name: ReduceMax (GitHub)

• domain: main

• since_version: 11

• function: False

• support_level: SupportType.COMMON

• shape inference: True

This version of the operator has been available since version 11.

Summary

Computes the max of the input tensor’s element along the provided axes. The resulting tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then the resulted tensor have the reduced dimension pruned.

The above behavior is similar to numpy, with the exception that numpy defaults keepdims to False instead of True.

Attributes

• axes: A list of integers, along which to reduce. The default is to reduce over all the dimensions of the input tensor. Accepted range is [-r, r-1] where r = rank(data).

• keepdims: Keep the reduced dimension or not, default 1 means keep reduced dimension. Default value is 1.

Inputs

• data (heterogeneous) - T: An input tensor.

Outputs

• reduced (heterogeneous) - T: Reduced output tensor.

Type Constraints

• T in ( tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) ): Constrain input and output types to high-precision numeric tensors.

Differences

 0 0 Computes the max of the input tensor's element along the provided axes. The resulting Computes the max of the input tensor's element along the provided axes. The resulting 1 1 tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then 2 2 the resulted tensor have the reduced dimension pruned. the resulted tensor have the reduced dimension pruned. 3 3 4 4 The above behavior is similar to numpy, with the exception that numpy defaults keepdims to The above behavior is similar to numpy, with the exception that numpy defaults keepdims to 5 5 False instead of True. False instead of True. 6 6 7 7 **Attributes** **Attributes** 8 8 9 9 * **axes**: * **axes**: 10 10 A list of integers, along which to reduce. The default is to reduce A list of integers, along which to reduce. The default is to reduce 11 11 over all the dimensions of the input tensor. over all the dimensions of the input tensor. Accepted range is [-r, 12 r-1] where r = rank(data). 12 13 * **keepdims**: * **keepdims**: 13 14 Keep the reduced dimension or not, default 1 means keep reduced Keep the reduced dimension or not, default 1 means keep reduced 14 15 dimension. Default value is 1. dimension. Default value is 1. 15 16 16 17 **Inputs** **Inputs** 17 18 18 19 * **data** (heterogeneous) - **T**: * **data** (heterogeneous) - **T**: 19 20 An input tensor. An input tensor. 20 21 21 22 **Outputs** **Outputs** 22 23 23 24 * **reduced** (heterogeneous) - **T**: * **reduced** (heterogeneous) - **T**: 24 25 Reduced output tensor. Reduced output tensor. 25 26 26 27 **Type Constraints** **Type Constraints** 27 28 28 29 * **T** in ( * **T** in ( 29 30 tensor(double), tensor(double), 30 31 tensor(float), tensor(float), 31 32 tensor(float16), tensor(float16), 32 33 tensor(int32), tensor(int32), 33 34 tensor(int64), tensor(int64), 34 35 tensor(uint32), tensor(uint32), 35 36 tensor(uint64) tensor(uint64) 36 37 ): ): 37 38 Constrain input and output types to high-precision numeric tensors. Constrain input and output types to high-precision numeric tensors.

## ReduceMax - 1#

Version

• name: ReduceMax (GitHub)

• domain: main

• since_version: 1

• function: False

• support_level: SupportType.COMMON

• shape inference: True

This version of the operator has been available since version 1.

Summary

Computes the max of the input tensor’s element along the provided axes. The resulting tensor has the same rank as the input if keepdims equals 1. If keepdims equal 0, then the resulted tensor have the reduced dimension pruned.

The above behavior is similar to numpy, with the exception that numpy defaults keepdims to False instead of True.

Attributes

• axes: A list of integers, along which to reduce. The default is to reduce over all the dimensions of the input tensor.

• keepdims: Keep the reduced dimension or not, default 1 means keep reduced dimension. Default value is 1.

Inputs

• data (heterogeneous) - T: An input tensor.

Outputs

• reduced (heterogeneous) - T: Reduced output tensor.

Type Constraints

• T in ( tensor(double), tensor(float), tensor(float16), tensor(int32), tensor(int64), tensor(uint32), tensor(uint64) ): Constrain input and output types to high-precision numeric tensors.