CastLike - version 23#

This page documents version 23 of operator CastLike. See 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

Node:
  CastLike(input, target_type) -> (output)
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

Node:
  CastLike(input, target_type) -> (output)
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

Node:
  CastLike(input, target_type) -> (output)
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

Node:
  CastLike(input, target_type) -> (output)
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)’]