:nosearch: .. _op_ai_onnx_CastLike-23: CastLike - version 23 ===================== This page documents version **23** of operator **CastLike**. See :doc:`CastLike` for the latest version (since version 25). - **Domain**: ``ai.onnx`` - **Since version**: 23 The operator casts the elements of a given input tensor (the first input) to the same data type as the elements of the second input tensor. See documentation of the Cast operator for further details. **Inputs** - **input** (*T1*): Input tensor to be cast. - **target_type** (*T2*): The (first) input tensor will be cast to produce a tensor of the same type as this (second input) tensor. **Outputs** - **output** (*T2*): Output tensor produced by casting the first input tensor to have the same type as the second input tensor. **Type Constraints** - **T1**: Constrain input types. Casting from complex is not supported. Allowed types: tensor(bfloat16), tensor(bool), tensor(double), tensor(float), tensor(float16), tensor(float4e2m1), tensor(float8e4m3fn), tensor(float8e4m3fnuz), tensor(float8e5m2), tensor(float8e5m2fnuz), tensor(int16), tensor(int32), tensor(int4), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint4), tensor(uint64), tensor(uint8). - **T2**: Constrain output types. Casting to complex is not supported. Allowed types: tensor(bfloat16), tensor(bool), tensor(double), tensor(float), tensor(float16), tensor(float4e2m1), tensor(float8e4m3fn), tensor(float8e4m3fnuz), tensor(float8e5m2), tensor(float8e5m2fnuz), tensor(int16), tensor(int32), tensor(int4), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint4), tensor(uint64), tensor(uint8). Examples -------- **test_cc_castlike_FLOAT16_to_FLOAT4E2M1** .. code-block:: text Node: CastLike(input, target_type) -> (output) .. code-block:: text Inputs: input: shape=(3, 5), dtype=float16 [[ 4.80e-01, 2.50e-01, 1.05e+00, -3.50e+00, -8.00e+00], [ 9.00e+00, inf, 1.19e-07, nan, inf], [ inf, -inf, -4.00e+00, 1.00e-02, -0.00e+00]] target_type: shape=(1,), dtype=float4_e2m1fn [0] Outputs: output: shape=(3, 5), dtype=float4_e2m1fn [[0.5, 0, 1, -4, -6], [6, 6, 0, 0, 6], [6, -6, -4, 0, -0]] **test_cc_castlike_FLOAT4E2M1_to_FLOAT** .. code-block:: text Node: CastLike(input, target_type) -> (output) .. code-block:: text Inputs: input: shape=(3, 5), dtype=float4_e2m1fn [[0.5, 0, 1, -4, -6], [6, 6, 0, 0, 6], [6, -6, -4, 0, -0]] target_type: shape=(1,), dtype=float32 [0.] Outputs: output: shape=(3, 5), dtype=float32 [[ 0.5, 0. , 1. , -4. , -6. ], [ 6. , 6. , 0. , 0. , 6. ], [ 6. , -6. , -4. , 0. , -0. ]] **test_cc_castlike_FLOAT4E2M1_to_FLOAT16** .. code-block:: text Node: CastLike(input, target_type) -> (output) .. code-block:: text Inputs: input: shape=(3, 5), dtype=float4_e2m1fn [[0.5, 0, 1, -4, -6], [6, 6, 0, 0, 6], [6, -6, -4, 0, -0]] target_type: shape=(1,), dtype=float16 [0.] Outputs: output: shape=(3, 5), dtype=float16 [[ 0.5, 0. , 1. , -4. , -6. ], [ 6. , 6. , 0. , 0. , 6. ], [ 6. , -6. , -4. , 0. , -0. ]] **test_cc_castlike_FLOAT_to_FLOAT4E2M1** .. code-block:: text Node: CastLike(input, target_type) -> (output) .. code-block:: text Inputs: input: shape=(3, 5), dtype=float32 [[ 4.80e-01, 2.50e-01, 1.05e+00, -3.50e+00, -8.00e+00], [ 9.00e+00, 1.00e+06, 1.00e-07, nan, inf], [ inf, -inf, -4.00e+00, 1.00e-02, -0.00e+00]] target_type: shape=(1,), dtype=float4_e2m1fn [0] Outputs: output: shape=(3, 5), dtype=float4_e2m1fn [[0.5, 0, 1, -4, -6], [6, 6, 0, 0, 6], [6, -6, -4, 0, -0]] Differences with previous version (21) -------------------------------------- **SchemaDiff**: ``CastLike`` (domain ``'ai.onnx'``) * old version: 21 * new version: 23 * breaking: no **Type constraints:** * changed 'T1': added types: ['tensor(float4e2m1)'] * changed 'T2': added types: ['tensor(float4e2m1)']