.. _op_ai_onnx_Sign: Sign ==== - **Domain**: ``ai.onnx`` - **Since version**: 13 Calculate the sign of the given input tensor element-wise. If input > 0, output 1. if input < 0, output -1. if input == 0, output 0. **Inputs** - **input** (*T*): Input tensor **Outputs** - **output** (*T*): The sign of the input tensor computed element-wise. It has the same shape and type of the input. **Type Constraints** - **T**: Constrain input and output 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). Examples -------- **test_cc_sign** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=float32 [[-2.5 , -1. , 0. ], [ 0.5 , 1. , 3.25]] Outputs: y: shape=(2, 3), dtype=float32 [[-1., -1., 0.], [ 1., 1., 1.]] **test_cc_sign_bfloat16** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=bfloat16 [[-3, -0.5, 0], [0.5, 2, -1]] Outputs: y: shape=(2, 3), dtype=bfloat16 [[-1, -1, 0], [1, 1, -1]] **test_cc_sign_float16** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=float16 [[-3. , -0.5, 0. ], [ 0.5, 2. , -1. ]] Outputs: y: shape=(2, 3), dtype=float16 [[-1., -1., 0.], [ 1., 1., -1.]] **test_cc_sign_int16** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=int16 [[ -1, 0, 2], [-1000, 3, -5]] Outputs: y: shape=(2, 3), dtype=int16 [[-1, 0, 1], [-1, 1, -1]] **test_cc_sign_int32** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=int32 [[ -1, 0, 2], [-100000, 3, -5]] Outputs: y: shape=(2, 3), dtype=int32 [[-1, 0, 1], [-1, 1, -1]] **test_cc_sign_int64** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=int64 [[ -1, 0, 2], [-1000000000000, 3, -5]] Outputs: y: shape=(2, 3), dtype=int64 [[-1, 0, 1], [-1, 1, -1]] **test_cc_sign_int8** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=int8 [[ -1, 0, 2], [-127, 3, -5]] Outputs: y: shape=(2, 3), dtype=int8 [[-1, 0, 1], [-1, 1, -1]] **test_cc_sign_uint16** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=uint16 [[ 0, 1, 1000], [ 0, 5, 65535]] Outputs: y: shape=(2, 3), dtype=uint16 [[0, 1, 1], [0, 1, 1]] **test_cc_sign_uint32** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=uint32 [[ 0, 1, 1000000], [ 0, 5, 4294967295]] Outputs: y: shape=(2, 3), dtype=uint32 [[0, 1, 1], [0, 1, 1]] **test_cc_sign_uint64** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=uint64 [[ 0, 1, 1000000000000], [ 0, 5, 18446744073709551615]] Outputs: y: shape=(2, 3), dtype=uint64 [[0, 1, 1], [0, 1, 1]] **test_cc_sign_uint8** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(2, 3), dtype=uint8 [[ 0, 1, 2], [ 0, 5, 255]] Outputs: y: shape=(2, 3), dtype=uint8 [[0, 1, 1], [0, 1, 1]] **test_sign** .. code-block:: text Node: Sign(x) -> (y) .. code-block:: text Inputs: x: shape=(11,), dtype=float32 [-5., -4., -3., -2., -1., 0., 1., 2., 3., 4., 5.] Outputs: y: shape=(11,), dtype=float32 [-1., -1., -1., -1., -1., 0., 1., 1., 1., 1., 1.] Differences with previous version (9) ------------------------------------- **SchemaDiff**: ``Sign`` (domain ``'ai.onnx'``) * old version: 9 * new version: 13 * breaking: no **Type constraints:** * changed 'T': added types: ['tensor(bfloat16)'] Version History --------------- - :doc:`Version 9 `