.. _op_ai_onnx_GreaterOrEqual: GreaterOrEqual ============== - **Domain**: ``ai.onnx`` - **Since version**: 16 Returns the tensor resulted from performing the ``GreaterOrEqual`` 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_greater_or_equal** .. code-block:: text Node: GreaterOrEqual(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 [[False, True], [ True, True]] **test_cc_greater_or_equal_bcast** .. code-block:: text Node: GreaterOrEqual(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 [[False, False], [ True, True]] **test_cc_greater_or_equal_bfloat16** .. code-block:: text Node: GreaterOrEqual(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 [[False, True, True], [ True, False, True]] **test_cc_greater_or_equal_float16** .. code-block:: text Node: GreaterOrEqual(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 [[False, True, True], [ True, False, True]] **test_greater_equal** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=float32 [[[ 1.096885 , 0.07066563, 1.2448575 , 0.14811043, -0.5882804 ], [-0.76082605, 0.30773467, -0.16073832, -0.5154356 , -1.2388316 ], [ 0.45789725, 1.223727 , 0.904155 , 1.3492115 , -0.3860116 ], [ 1.0861362 , -0.04619086, -0.4874804 , 0.09241318, 0.01729156]], [[ 0.33288187, 2.0623937 , 0.8016675 , -1.2551261 , -0.95763373], [ 2.8635995 , -0.07978736, 0.7112011 , -1.0436926 , 0.04026257], [ 1.7116932 , 1.4548388 , 0.05999403, -0.4005206 , -0.311438 ], [ 1.7903335 , 0.65163237, 0.9814421 , 2.2528698 , 0.9619803 ]], [[-0.7707977 , -1.3540401 , 0.6926936 , 0.16810998, 0.39450422], [ 0.7462312 , -0.65408707, -0.01557474, -0.31656304, -0.52292097], [-0.12932564, 0.6598996 , -0.9455917 , -0.09841688, -0.2862465 ], [ 1.9248927 , 0.4243033 , -0.92452365, -1.027331 , -1.695347 ]]] y: shape=(3, 4, 5), dtype=float32 [[[-9.4792253e-01, -6.1622328e-01, -2.7506614e+00, -7.1404856e-01, 1.3997095e+00], [-2.8393906e-01, -1.6412349e-01, -6.7827290e-01, 2.4085191e-01, 4.9361777e-01], [-2.4063063e-01, 1.7832187e+00, 1.2601568e+00, 8.7304723e-01, 1.6478558e+00], [-2.5179946e-01, -1.4829162e+00, -4.9271366e-01, -1.5499992e+00, -3.0267167e-01]], [[-4.9574757e-01, 2.8974986e-01, 8.6432129e-01, -1.1831111e+00, 5.8822042e-01], [-1.7248467e+00, -4.0154502e-01, 2.4545431e-01, 1.4359000e+00, -9.9507153e-01], [-9.6928167e-01, -9.7301491e-02, 1.3923490e-01, 1.0592966e+00, -1.2110893e+00], [-4.0319696e-01, -8.7887537e-01, -1.2383486e+00, 1.6847624e+00, 8.3216959e-01]], [[-1.5605131e-01, -1.1203907e+00, -1.8518837e-01, -8.6301607e-01, 1.5879667e-03], [-2.6343402e-01, 1.6419634e+00, -5.7128775e-01, 8.8431293e-01, -4.1970479e-01], [ 4.2572483e-01, -1.4820842e-01, -1.3883865e+00, -2.6390123e-01, -4.2321909e-02], [ 6.5218055e-01, -9.3892686e-02, -2.2359974e+00, 1.3215044e+00, 8.4481820e-02]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, True, True, False], [False, True, True, False, False], [ True, False, False, True, False], [ True, True, True, True, True]], [[ True, True, False, False, False], [ True, True, True, False, True], [ True, True, False, False, True], [ True, True, True, True, True]], [[False, False, True, True, True], [ True, False, True, False, False], [False, True, True, True, False], [ True, True, True, False, False]]] **test_greater_equal_bcast** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=float32 [[[ 2.4561718 , -0.5817526 , -0.54229295, -0.41356328, -0.20007235], [-0.54210097, -0.65532076, 1.3473451 , -0.26939955, -0.72250503], [ 0.95833427, -0.78738844, -0.28558663, -0.04312987, 0.23397207], [-1.9877945 , 1.324135 , 1.140795 , -1.7412977 , -0.02137867]], [[ 0.5489151 , -0.2974111 , -1.2979202 , -0.2075926 , -1.7911516 ], [-1.660064 , 2.078913 , 0.847851 , 0.13794622, 0.8359384 ], [-0.5319438 , 1.3650343 , 1.2040756 , 1.1579663 , 1.9649589 ], [-0.8214484 , -0.8813257 , -1.7042575 , 1.2134799 , 1.530937 ]], [[-0.08842818, -2.3269267 , -0.7379559 , 0.71526307, -0.92147946], [-0.42176482, -0.2546885 , 0.6320057 , -1.148917 , -1.7351899 ], [-0.0150405 , -0.7948117 , -0.9393947 , -0.88039076, -1.2827091 ], [ 0.33037648, -0.52088577, 1.5395774 , 2.1163888 , -1.3960867 ]]] y: shape=(5,), dtype=float32 [ 0.8498976 , -0.56461936, 1.0727223 , 0.32034445, 0.14509577] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, False, False, False, False], [False, False, True, False, False], [ True, False, False, False, True], [False, True, True, False, False]], [[False, True, False, False, False], [False, True, False, False, True], [False, True, True, True, True], [False, False, False, True, True]], [[False, False, False, True, False], [False, True, False, False, False], [False, False, False, False, False], [False, True, True, True, False]]] **test_greater_equal_int16** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=int16 [[[ 0, 0, 1, -1, 0], [ 0, -1, 1, 0, 0], [ 0, 0, 0, 0, 1], [-1, 1, 1, 0, -1]], [[ 0, 0, 0, 0, 0], [-1, 0, 0, 0, -1], [ 0, -1, 0, 0, 0], [ 0, 0, 0, 0, 1]], [[-1, 0, -1, -2, 0], [-2, 0, -2, 0, 0], [ 0, 0, 0, 0, -1], [ 0, 0, 0, -1, -1]]] y: shape=(3, 4, 5), dtype=int16 [[[ 0, 0, 0, 0, 0], [ 0, 0, 0, 0, -1], [-1, 0, 0, 0, 0], [-1, 0, 0, 0, 0]], [[ 0, 0, 0, -1, 0], [ 0, 0, 0, 1, 0], [ 0, 0, 1, 0, 2], [ 0, 0, 0, -1, 0]], [[ 0, 0, 0, -1, 0], [ 0, 0, 0, 1, 0], [ 0, -1, -2, -1, 0], [ 0, -1, -1, -1, 0]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, True, False, True], [ True, False, True, True, True], [ True, True, True, True, True], [ True, True, True, True, False]], [[ True, True, True, True, True], [False, True, True, False, False], [ True, False, False, True, False], [ True, True, True, True, True]], [[False, True, False, False, True], [False, True, False, False, True], [ True, True, True, True, False], [ True, True, True, True, False]]] **test_greater_equal_int8** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=int8 [[[ 2, 0, 0, -1, 0], [ 0, -1, -1, 2, -2], [ 0, -1, 0, -1, -1], [ 0, 0, 0, 0, -1]], [[ 0, 0, 0, -1, 0], [ 0, 0, 0, 0, 0], [ 0, 0, -2, 1, -1], [ 1, 2, 1, -1, 0]], [[ 0, 0, 0, 0, 0], [ 0, -1, 0, 0, 0], [ 0, 0, 0, 0, 0], [ 0, 2, 2, 0, -1]]] y: shape=(3, 4, 5), dtype=int8 [[[ 0, 0, -1, 0, 2], [ 0, -1, 0, 0, 0], [ 0, -2, 0, 0, 1], [-1, -1, 0, 0, 0]], [[ 0, -1, 0, 0, -1], [ 0, 0, 0, 0, 0], [ 0, 0, 1, 0, 0], [ 0, 0, 1, 0, 0]], [[ 0, 0, -3, 0, 1], [-1, 0, 0, 0, 0], [-1, 0, 0, 1, 0], [ 0, 0, 0, 1, -1]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, True, False, False], [ True, True, False, True, False], [ True, True, True, False, False], [ True, True, True, True, False]], [[ True, True, True, False, True], [ True, True, True, True, True], [ True, True, False, True, False], [ True, True, True, False, True]], [[ True, True, True, True, False], [ True, False, True, True, True], [ True, True, True, False, True], [ True, True, True, False, True]]] **test_greater_equal_uint16** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint16 [[[19, 18, 14, 0, 12], [11, 1, 23, 5, 12], [11, 11, 16, 15, 7], [17, 3, 17, 4, 3]], [[ 1, 4, 12, 21, 16], [10, 1, 5, 19, 18], [ 0, 15, 2, 6, 22], [ 8, 13, 22, 22, 5]], [[ 3, 16, 10, 3, 11], [18, 19, 11, 0, 6], [19, 5, 8, 20, 21], [ 2, 22, 2, 2, 16]]] y: shape=(3, 4, 5), dtype=uint16 [[[22, 19, 2, 12, 15], [12, 15, 17, 0, 8], [ 6, 6, 10, 19, 20], [10, 11, 14, 8, 7]], [[ 5, 9, 11, 1, 3], [ 1, 10, 22, 19, 21], [ 0, 18, 21, 7, 14], [23, 17, 11, 14, 1]], [[16, 2, 8, 10, 21], [19, 3, 7, 0, 8], [ 4, 2, 1, 16, 14], [23, 0, 1, 16, 8]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[False, False, True, False, False], [False, False, True, True, True], [ True, True, True, False, False], [ True, False, True, False, False]], [[False, False, True, True, True], [ True, False, False, True, False], [ True, False, False, False, True], [False, False, True, True, True]], [[False, True, True, False, False], [False, True, True, True, False], [ True, True, True, True, True], [False, True, True, False, True]]] **test_greater_equal_uint32** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint32 [[[ 3, 2, 10, 19, 9], [23, 5, 22, 13, 17], [ 5, 0, 9, 17, 6], [10, 18, 0, 10, 20]], [[14, 19, 9, 0, 21], [23, 23, 14, 7, 9], [17, 21, 22, 3, 20], [20, 13, 21, 6, 12]], [[16, 14, 14, 12, 14], [16, 15, 23, 0, 7], [14, 17, 17, 2, 12], [17, 22, 13, 10, 18]]] y: shape=(3, 4, 5), dtype=uint32 [[[ 1, 11, 23, 1, 4], [ 7, 6, 12, 12, 1], [ 1, 6, 11, 13, 7], [13, 20, 3, 4, 8]], [[15, 14, 20, 18, 5], [20, 14, 11, 16, 13], [23, 13, 21, 6, 0], [ 4, 17, 17, 23, 6]], [[ 8, 13, 13, 5, 17], [12, 1, 0, 6, 4], [20, 22, 20, 16, 15], [ 5, 19, 14, 8, 8]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, False, False, True, True], [ True, False, True, True, True], [ True, False, False, True, False], [False, False, False, True, True]], [[False, True, False, False, True], [ True, True, True, False, False], [False, True, True, False, True], [ True, False, True, False, True]], [[ True, True, True, True, False], [ True, True, True, False, True], [False, False, False, False, False], [ True, True, False, True, True]]] **test_greater_equal_uint64** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint64 [[[20, 17, 18, 17, 7], [17, 22, 22, 8, 0], [14, 4, 10, 16, 6], [ 2, 18, 11, 23, 6]], [[10, 0, 23, 5, 8], [ 6, 12, 10, 6, 14], [ 5, 9, 17, 1, 3], [ 0, 6, 19, 23, 7]], [[18, 18, 4, 17, 23], [ 2, 23, 6, 21, 23], [21, 13, 11, 1, 17], [ 4, 16, 4, 17, 3]]] y: shape=(3, 4, 5), dtype=uint64 [[[17, 1, 22, 10, 7], [17, 2, 11, 15, 13], [16, 17, 21, 3, 6], [ 2, 16, 4, 6, 0]], [[13, 11, 7, 3, 7], [ 7, 7, 10, 22, 23], [ 4, 14, 13, 13, 15], [12, 9, 20, 12, 8]], [[ 8, 21, 18, 18, 6], [ 1, 3, 5, 3, 12], [20, 7, 5, 1, 5], [ 7, 17, 18, 8, 6]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, True, False, True, True], [ True, True, True, False, False], [False, False, False, True, True], [ True, True, True, True, True]], [[False, False, True, True, True], [False, True, True, False, False], [ True, False, True, False, False], [False, False, False, True, False]], [[ True, False, False, False, True], [ True, True, True, True, True], [ True, True, True, True, True], [False, False, False, True, False]]] **test_greater_equal_uint8** .. code-block:: text Node: GreaterOrEqual(x, y) -> (greater_equal) .. code-block:: text Inputs: x: shape=(3, 4, 5), dtype=uint8 [[[18, 15, 2, 10, 19], [19, 13, 17, 23, 8], [15, 6, 12, 1, 1], [13, 13, 4, 16, 15]], [[21, 10, 13, 19, 22], [14, 1, 22, 20, 3], [ 1, 21, 15, 5, 0], [18, 20, 11, 4, 17]], [[ 2, 23, 0, 6, 4], [10, 5, 23, 8, 10], [18, 0, 2, 15, 0], [11, 20, 4, 18, 6]]] y: shape=(3, 4, 5), dtype=uint8 [[[ 9, 17, 5, 9, 1], [ 4, 2, 19, 4, 18], [ 2, 3, 22, 12, 10], [20, 3, 10, 20, 21]], [[ 9, 15, 18, 13, 13], [22, 21, 3, 19, 10], [10, 2, 2, 0, 17], [20, 15, 19, 12, 3]], [[22, 15, 0, 22, 21], [ 4, 19, 22, 6, 15], [ 5, 19, 21, 22, 23], [ 8, 23, 8, 3, 11]]] Outputs: greater_equal: shape=(3, 4, 5), dtype=bool [[[ True, False, False, True, True], [ True, True, False, True, False], [ True, True, False, False, False], [False, True, False, False, False]], [[ True, False, False, True, True], [False, False, True, True, False], [False, True, True, True, False], [False, True, False, False, True]], [[False, True, True, False, False], [ True, False, True, True, False], [ True, False, False, False, False], [ True, False, False, True, False]]] Differences with previous version (12) -------------------------------------- **SchemaDiff**: ``GreaterOrEqual`` (domain ``'ai.onnx'``) * old version: 12 * new version: 16 * breaking: no **Type constraints:** * changed 'T': added types: ['tensor(bfloat16)'] Version History --------------- - :doc:`Version 12 `