.. _op_ai_onnx_LessOrEqual: LessOrEqual =========== - **Domain**: ``ai.onnx`` - **Since version**: 16 Returns the tensor resulted from performing the ``LessOrEqual`` logical operation elementwise on the input tensors ``A`` and ``B`` (with Numpy-style broadcasting support). **Inputs** - **A** (*T*): First input operand for the logical operator. - **B** (*T*): Second input operand for the logical operator. **Outputs** - **C** (*T1*): Result tensor. **Type Constraints** - **T**: Constrain input types to all numeric tensors. Allowed types: tensor(bfloat16), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8). - **T1**: Constrain output to boolean tensor. Allowed types: tensor(bool). Examples -------- **test_cc_less_or_equal** .. code-block:: text Node: LessOrEqual(x, y) -> (z) .. code-block:: text Inputs: x: shape=(2, 2), dtype=float32 [[1., 2.], [3., 4.]] y: shape=(2, 2), dtype=float32 [[2., 2.], [2., 2.]] Outputs: z: shape=(2, 2), dtype=bool [[ True, True], [False, False]] **test_cc_less_or_equal_bcast** .. code-block:: text Node: LessOrEqual(x, y) -> (z) .. code-block:: text Inputs: x: shape=(2, 2), dtype=float32 [[1., 2.], [3., 4.]] y: shape=(), dtype=float32 2.5 Outputs: z: shape=(2, 2), dtype=bool [[ True, True], [False, False]] **test_cc_less_or_equal_bfloat16** .. code-block:: text Node: LessOrEqual(x, y) -> (z) .. code-block:: text Inputs: x: shape=(2, 3), dtype=bfloat16 [[1, 4, 3], [6, 5, 2]] y: shape=(2, 3), dtype=bfloat16 [[2, 3, 3], [5, 6, 1]] Outputs: z: shape=(2, 3), dtype=bool [[ True, False, True], [False, True, False]] **test_cc_less_or_equal_float16** .. code-block:: text Node: LessOrEqual(x, y) -> (z) .. code-block:: text Inputs: x: shape=(2, 3), dtype=float16 [[1., 4., 3.], [6., 5., 2.]] y: shape=(2, 3), dtype=float16 [[2., 3., 3.], [5., 6., 1.]] Outputs: z: shape=(2, 3), dtype=bool [[ True, False, True], [False, True, False]] **test_less_equal** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=float32 [[[ 0.9760249 , -1.406126 , -0.12421781, -0.52373403, 0.41932675], [ 0.27826825, -0.23256789, 0.31281596, 1.7152759 , -0.4685622 ], [ 1.6827575 , -0.6550668 , 0.88474035, -0.8752956 , 1.5142606 ], [ 2.230853 , 1.1628902 , 1.0536754 , -0.38988066, -0.12397643]], [[-0.6159138 , 1.7301503 , 0.32262358, 0.26730144, -0.43189177], [-1.41254 , -0.5992266 , -0.1417953 , -0.88752455, 0.54206866], [ 1.2933948 , -1.0648104 , -1.7061615 , 0.35129723, 0.07801718], [ 0.7410444 , 0.5409798 , 1.2180305 , -0.9647878 , 1.5623269 ]], [[-1.2821317 , -0.32203224, 1.1033496 , -0.52434987, -2.103858 ], [ 0.12551832, -1.0882939 , 1.1399779 , -0.8119061 , 1.0325336 ], [-0.3464956 , 0.067316 , -0.6120505 , -0.8383071 , 0.4578635 ], [-0.4873953 , -1.8118677 , 1.6179551 , -0.25800037, -1.3510442 ]]] y: shape=(3, 4, 5), dtype=float32 [[[ 0.6424135 , -0.07923876, -0.80852747, 1.2304533 , -0.5928223 ], [ 2.0904076 , 0.22288574, 1.3092872 , -0.4789879 , -0.99120224], [ 0.02008047, -2.1639197 , 0.50506794, -0.0217918 , 0.53066057], [ 1.614777 , -1.1102229 , -0.1454173 , -0.43676758, 1.6230818 ]], [[-0.0030605 , -1.464648 , 0.9040757 , 0.36638427, 0.45825332], [-0.58391577, -0.48593545, -1.7836744 , -0.45037678, 1.5327936 ], [ 1.4424105 , -0.6637741 , -1.0735201 , 0.16453137, 1.1178625 ], [-0.03689655, -1.7275084 , -1.0636946 , 1.3462708 , 0.7665019 ]], [[ 0.3134391 , 0.20939107, -0.4457152 , -2.4183512 , 0.15469022], [-0.61971503, 0.7720385 , -1.4681771 , -0.37253025, 0.12735151], [-0.64202845, 0.32108006, 0.06701048, 0.90052515, -0.02043158], [-1.2871481 , -0.539331 , -0.01650807, 0.2500747 , -0.41091728]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[False, True, False, True, False], [ True, True, True, False, False], [False, False, False, True, False], [False, False, False, False, True]], [[ True, False, True, True, True], [ True, True, False, True, True], [ True, True, True, False, True], [False, False, False, True, False]], [[ True, True, False, False, True], [False, True, False, True, False], [False, True, True, True, False], [False, True, False, True, True]]] **test_less_equal_bcast** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=float32 [[[ 0.688139 , 0.4059095 , 0.5489893 , 0.53392977, -0.23932606], [-1.0142083 , 0.4045466 , 1.4186801 , 0.836225 , 0.34012377], [ 0.39690927, 0.48286068, 0.11945067, 0.67921764, 0.6502616 ], [-0.13860437, 1.0753198 , -1.2349424 , -0.3677892 , -1.31015 ]], [[ 0.5327096 , 1.2503086 , 0.3544114 , -0.08178153, 1.5889839 ], [ 1.0662332 , -0.7519196 , 1.5254875 , -0.8890685 , 0.5035054 ], [ 0.27429065, 1.1453737 , -0.31324735, 0.01508748, -2.5111487 ], [ 0.7356594 , -0.9168175 , -1.4680874 , -0.29763973, -0.33805344]], [[-0.18328828, -0.9918209 , -0.43523848, 1.3486882 , 0.2865167 ], [ 1.0735011 , 1.2454768 , -0.24654908, -0.25850663, -0.44884643], [ 0.59952974, -0.87400043, -1.6007645 , -0.2318745 , -0.8217434 ], [-0.38645756, -0.01502475, -2.1362379 , 1.4194688 , 0.61329293]]] y: shape=(5,), dtype=float32 [-1.8606409 , -1.7987977 , -0.00592274, 0.8890261 , 0.33609542] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[False, False, False, True, True], [False, False, False, True, False], [False, False, False, True, False], [False, False, True, True, True]], [[False, False, False, True, False], [False, False, False, True, False], [False, False, True, True, True], [False, False, True, True, True]], [[False, False, True, False, True], [False, False, True, True, True], [False, False, True, True, True], [False, False, True, False, False]]] **test_less_equal_int16** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=int16 [[[ 0, -1, 0, 0, 0], [ 0, 0, 0, 0, 1], [ 0, 0, 0, 0, 0], [ 0, 0, 1, 0, 0]], [[ 0, 0, -1, 0, 0], [ 0, 0, 0, 0, 0], [ 0, 0, 0, -1, 0], [-1, 0, 0, -1, 0]], [[ 1, 0, -1, 0, 0], [-1, -1, 0, 1, 0], [ 0, -1, 0, -2, 1], [-1, -1, 2, 0, 1]]] y: shape=(3, 4, 5), dtype=int16 [[[ 0, 0, 1, 0, 0], [ 0, 0, 0, 0, 1], [-1, 0, 0, 1, 0], [ 0, 0, 0, 0, 0]], [[ 0, 0, 0, -1, 0], [ 0, 0, 0, 0, 0], [ 0, 0, -1, 1, 1], [ 0, 0, 0, 0, 0]], [[ 0, 0, 0, 0, 0], [ 1, 0, 0, 1, 0], [ 0, -1, 0, 0, 0], [ 0, 0, 0, -2, 0]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, True, True, True], [ True, True, True, True, True], [False, True, True, True, True], [ True, True, False, True, True]], [[ True, True, True, False, True], [ True, True, True, True, True], [ True, True, False, True, True], [ True, True, True, True, True]], [[False, True, True, True, True], [ True, True, True, True, True], [ True, True, True, True, False], [ True, True, False, False, False]]] **test_less_equal_int8** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=int8 [[[ 0, 0, 0, 0, 0], [ 2, 0, 0, 0, 0], [ 0, 0, -1, -1, 1], [ 1, 1, 0, 0, 0]], [[ 0, 0, 0, 0, 0], [ 0, 0, 0, 0, 0], [ 2, 0, 0, 0, 0], [-2, 0, 0, -1, 0]], [[ 0, 0, 1, -1, -1], [ 0, 0, 0, 0, 0], [ 0, 0, 0, 1, 0], [ 0, 0, 0, 0, 0]]] y: shape=(3, 4, 5), dtype=int8 [[[ 0, 0, 0, 0, 0], [ 0, -1, 0, -1, 1], [-1, 0, 0, 0, 0], [-1, 0, 0, 1, 0]], [[ 0, 0, 0, 0, 0], [ 0, 1, 0, 0, 0], [ 1, 0, 0, 0, 0], [ 0, 0, 0, 0, 0]], [[ 0, 1, 0, 0, 0], [-2, 0, 0, 0, 0], [ 0, 0, 0, 0, 0], [ 0, 1, 0, -1, -1]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, True, True, True], [False, False, True, False, True], [False, True, True, True, False], [False, False, True, True, True]], [[ True, True, True, True, True], [ True, True, True, True, True], [False, True, True, True, True], [ True, True, True, True, True]], [[ True, True, False, True, True], [False, True, True, True, True], [ True, True, True, False, True], [ True, True, True, False, False]]] **test_less_equal_uint16** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint16 [[[ 8, 2, 6, 11, 8], [18, 17, 22, 11, 2], [11, 19, 8, 21, 20], [22, 10, 15, 7, 7]], [[21, 8, 4, 18, 8], [ 6, 19, 14, 22, 23], [16, 0, 18, 11, 19], [12, 12, 12, 2, 5]], [[ 8, 5, 0, 10, 14], [ 9, 21, 16, 2, 0], [ 4, 6, 11, 5, 10], [23, 22, 21, 23, 0]]] y: shape=(3, 4, 5), dtype=uint16 [[[ 7, 10, 0, 0, 6], [23, 23, 16, 11, 15], [ 7, 9, 10, 5, 15], [19, 8, 2, 18, 11]], [[19, 23, 12, 20, 16], [14, 14, 18, 17, 16], [20, 11, 6, 23, 15], [21, 9, 10, 20, 18]], [[23, 12, 23, 12, 0], [12, 7, 3, 22, 16], [ 4, 19, 16, 6, 14], [ 3, 4, 7, 0, 17]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[False, True, False, False, False], [ True, True, False, True, True], [False, False, True, False, False], [False, False, False, True, True]], [[False, True, True, True, True], [ True, False, True, False, False], [ True, True, False, True, False], [ True, False, False, True, True]], [[ True, True, True, True, False], [ True, False, False, True, True], [ True, True, True, True, True], [False, False, False, False, True]]] **test_less_equal_uint32** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint32 [[[21, 22, 16, 15, 1], [21, 16, 2, 3, 11], [ 0, 22, 14, 18, 0], [ 8, 6, 18, 14, 3]], [[18, 0, 2, 4, 12], [ 8, 3, 11, 21, 16], [13, 1, 7, 0, 22], [ 6, 11, 3, 1, 1]], [[ 3, 5, 12, 6, 0], [ 0, 16, 4, 18, 17], [ 8, 5, 20, 6, 5], [ 2, 23, 11, 7, 8]]] y: shape=(3, 4, 5), dtype=uint32 [[[ 6, 22, 21, 3, 21], [12, 10, 6, 2, 12], [ 5, 8, 13, 10, 19], [ 9, 9, 13, 8, 1]], [[21, 1, 18, 8, 12], [20, 0, 15, 9, 8], [21, 12, 3, 16, 7], [19, 18, 3, 20, 13]], [[ 8, 5, 10, 1, 17], [ 9, 22, 19, 1, 16], [12, 13, 12, 4, 11], [14, 3, 10, 17, 8]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[False, True, True, False, True], [False, False, True, False, True], [ True, False, False, False, True], [ True, True, False, False, False]], [[ True, True, True, True, True], [ True, False, True, False, False], [ True, True, False, True, False], [ True, True, True, True, True]], [[ True, True, False, False, True], [ True, True, True, False, False], [ True, True, False, False, True], [ True, False, False, True, True]]] **test_less_equal_uint64** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint64 [[[ 4, 1, 18, 13, 3], [ 8, 15, 16, 23, 12], [18, 22, 22, 10, 2], [11, 10, 4, 23, 15]], [[22, 1, 18, 2, 2], [23, 17, 14, 12, 2], [ 7, 7, 8, 5, 13], [18, 4, 20, 21, 5]], [[ 7, 1, 22, 17, 7], [10, 1, 12, 4, 1], [ 6, 20, 12, 3, 2], [ 0, 2, 13, 6, 13]]] y: shape=(3, 4, 5), dtype=uint64 [[[ 5, 0, 5, 20, 11], [18, 14, 22, 13, 1], [ 2, 5, 6, 18, 17], [11, 17, 19, 16, 19]], [[ 7, 2, 4, 14, 11], [ 9, 4, 19, 6, 10], [12, 0, 14, 2, 12], [ 4, 3, 14, 6, 6]], [[19, 17, 16, 17, 7], [ 2, 2, 4, 16, 23], [19, 7, 2, 23, 23], [20, 22, 0, 3, 19]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[ True, False, False, True, True], [ True, False, True, False, False], [False, False, False, True, True], [ True, True, True, False, True]], [[False, True, False, True, True], [False, False, True, False, True], [ True, False, True, False, False], [False, False, False, False, True]], [[ True, True, False, True, True], [False, True, False, True, True], [ True, False, False, True, True], [ True, True, False, False, True]]] **test_less_equal_uint8** .. code-block:: text Node: LessOrEqual(x, y) -> (less_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint8 [[[ 2, 21, 14, 12, 23], [22, 11, 8, 5, 0], [ 7, 19, 5, 0, 12], [13, 13, 2, 18, 3]], [[18, 6, 14, 0, 14], [ 9, 20, 20, 6, 16], [16, 10, 7, 14, 3], [21, 0, 18, 21, 3]], [[16, 13, 23, 5, 12], [ 2, 19, 8, 10, 10], [ 2, 2, 10, 11, 0], [ 1, 8, 4, 21, 8]]] y: shape=(3, 4, 5), dtype=uint8 [[[19, 13, 1, 13, 0], [12, 7, 5, 0, 17], [ 5, 20, 4, 16, 7], [ 4, 15, 18, 3, 20]], [[ 0, 7, 18, 9, 2], [ 6, 20, 20, 14, 7], [12, 10, 22, 20, 2], [ 6, 14, 6, 19, 19]], [[15, 4, 0, 3, 21], [ 5, 7, 10, 2, 4], [17, 13, 7, 0, 0], [ 0, 7, 11, 14, 0]]] Outputs: less_equal: shape=(3, 4, 5), dtype=bool [[[ True, False, False, True, False], [False, False, False, False, True], [False, True, False, True, False], [False, True, True, False, True]], [[False, True, True, True, False], [False, True, True, True, False], [False, True, True, True, False], [False, True, False, False, True]], [[False, False, False, False, True], [ True, False, True, False, False], [ True, True, False, False, True], [False, False, True, False, False]]] Differences with previous version (12) -------------------------------------- **SchemaDiff**: ``LessOrEqual`` (domain ``'ai.onnx'``) * old version: 12 * new version: 16 * breaking: no **Type constraints:** * changed 'T': added types: ['tensor(bfloat16)'] Version History --------------- - :doc:`Version 12 `