Less#

  • Domain: ai.onnx

  • Since version: 13

Returns the tensor resulted from performing the Less 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

Node:
  Less(x, y) -> (z)
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, False],
     [False, False]]

test_cc_less_bcast

Node:
  Less(x, y) -> (z)
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_bfloat16

Node:
  Less(x, y) -> (z)
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, False],
     [False,  True, False]]

test_cc_less_float16

Node:
  Less(x, y) -> (z)
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, False],
     [False,  True, False]]

test_less

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=float32
    [[[-0.24912022,  0.37703994, -0.69417447, -0.7060292 ,  0.20510858],
      [-0.6286968 ,  1.6711484 ,  0.33107895,  0.7037558 , -1.3299477 ],
      [ 1.2570701 ,  1.9146868 , -0.6062891 , -1.0759572 , -0.16256061],
      [ 0.2966216 , -0.32503194,  0.27875352, -0.66562593,  0.01234083]],

     [[-0.20715022,  0.14588691,  1.1557806 ,  0.46587473,  0.97787076],
      [-1.0761734 , -0.8160329 , -0.7835996 , -0.23407106,  1.9457138 ],
      [ 1.0166521 , -1.4913279 , -0.6863505 , -0.40249848, -1.3852327 ],
      [-0.77970237,  0.8188312 , -0.11476051, -0.29980806,  0.64011383]],

     [[-0.58414567, -1.0774288 , -0.68119806,  0.7641559 , -2.0380206 ],
      [-0.01588069,  1.8616133 , -1.0863703 ,  0.31693026, -0.6249668 ],
      [-1.7837567 , -1.1630548 ,  0.22905143, -0.25897345,  0.5301326 ],
      [ 0.44164625,  0.07234928, -0.8231903 ,  0.33295313,  0.59297967]]]
  y: shape=(3, 4, 5), dtype=float32
    [[[-1.313993  , -0.9773617 , -0.6343613 , -0.979214  , -0.58685726],
      [ 1.6898878 ,  0.08713032,  1.1718034 ,  0.79937506,  0.02316316],
      [ 0.29876754,  0.3574321 ,  1.1932331 , -0.9904888 ,  0.60881287],
      [-0.48373404,  0.70216364, -0.8474465 , -1.2743044 ,  0.29819134]],

     [[-0.4808629 ,  0.29299355, -0.61132276,  0.3887899 , -1.2674389 ],
      [-0.60134256, -0.5235882 ,  0.97903776, -0.41479465,  0.15080978],
      [ 1.9587631 , -1.2112936 , -0.30354005,  0.14342186, -0.8019956 ],
      [ 2.3820956 ,  0.72104615, -0.44501275, -1.3686862 , -0.5832208 ]],

     [[ 0.7293726 , -1.5513726 ,  0.8104244 ,  1.7539967 , -0.0733771 ],
      [ 1.4704529 , -0.6496508 , -0.20207614, -0.43526402, -1.2906929 ],
      [ 1.0649142 ,  0.89014375,  0.86430603, -1.833441  ,  0.4498562 ],
      [-1.6465589 , -2.0779915 , -0.7255597 , -1.012863  ,  0.95887685]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[False, False,  True, False, False],
      [ True, False,  True,  True,  True],
      [False, False,  True,  True,  True],
      [False,  True, False, False,  True]],

     [[False,  True, False, False, False],
      [ True,  True,  True, False, False],
      [ True,  True,  True,  True,  True],
      [ True, False, False, False, False]],

     [[ True, False,  True,  True,  True],
      [ True, False,  True, False, False],
      [ True,  True,  True, False, False],
      [False, False,  True, False,  True]]]

test_less_bcast

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=float32
    [[[-0.77932763, -0.11304837, -0.02405588, -0.74120575,  0.8054617 ],
      [-0.7910769 ,  0.27689603,  1.9664423 ,  0.8854545 , -1.534002  ],
      [ 0.92959636,  0.5410489 ,  0.75333405, -0.2559339 ,  0.813136  ],
      [-0.19769451,  0.7592801 , -0.773745  , -0.20088923,  0.9104622 ]],

     [[ 1.7654598 , -1.5343306 , -0.2801714 , -0.26017332,  1.7559413 ],
      [ 1.4949077 ,  0.36709183, -0.2965113 ,  0.6934157 ,  0.33218938],
      [-0.80441034,  0.50218654,  0.11497802, -0.20262195, -0.08662814],
      [-0.24888717,  0.40791112, -0.33651662,  0.26782736, -0.6243853 ]],

     [[ 0.17729989,  0.786931  ,  0.15775031, -0.5427288 ,  1.1266938 ],
      [-0.6303296 , -1.9371543 , -0.79998   , -0.32684922,  0.5279692 ],
      [ 0.15060616, -0.31763977, -0.4506991 , -0.62456864, -1.5034933 ],
      [-1.2187058 ,  0.899553  ,  1.2907162 , -0.59581614,  1.2079502 ]]]
  y: shape=(5,), dtype=float32
    [ 0.85281533, -2.0860636 ,  0.6411558 , -0.8953869 ,  0.9196889 ]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[ True, False,  True, False,  True],
      [ True, False, False, False,  True],
      [False, False, False, False,  True],
      [ True, False,  True, False,  True]],

     [[False, False,  True, False, False],
      [False, False,  True, False,  True],
      [ True, False,  True, False,  True],
      [ True, False,  True, False,  True]],

     [[ True, False,  True, False, False],
      [ True, False,  True, False,  True],
      [ True, False,  True, False,  True],
      [ True, False, False, False, False]]]

test_less_int16

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=int16
    [[[ 0, -1,  1,  0,  1],
      [ 1,  2,  0,  0,  1],
      [ 0,  0,  0, -1,  0],
      [ 0,  0,  0,  0,  0]],

     [[ 0,  0,  0,  0,  0],
      [-1, -1,  0,  0,  0],
      [-1,  0,  1,  0,  0],
      [ 0,  0,  0,  0,  0]],

     [[ 1,  0,  0,  0,  2],
      [-1,  0,  0,  0,  1],
      [ 0,  0,  1,  0,  1],
      [ 0,  0,  0, -1,  2]]]
  y: shape=(3, 4, 5), dtype=int16
    [[[ 0, -1,  0,  0,  0],
      [-1, -2,  0,  0,  0],
      [ 1,  0, -1,  0,  0],
      [ 0, -1,  0,  0,  0]],

     [[ 0, -1,  1, -1,  0],
      [ 0, -2,  0,  0, -1],
      [ 0,  0,  1,  0,  0],
      [ 0,  0,  0,  0,  1]],

     [[ 1,  0, -1,  0,  0],
      [ 0,  0,  0,  0,  0],
      [ 1, -1,  0,  0,  0],
      [-1, -1,  0,  1,  0]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[False, False, False, False, False],
      [False, False, False, False, False],
      [ True, False, False,  True, False],
      [False, False, False, False, False]],

     [[False, False,  True, False, False],
      [ True, False, False, False, False],
      [ True, False, False, False, False],
      [False, False, False, False,  True]],

     [[False, False, False, False, False],
      [ True, False, False, False, False],
      [ True, False, False, False, False],
      [False, False, False,  True, False]]]

test_less_int8

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=int8
    [[[ 0,  0,  0,  0, -1],
      [ 0,  0,  0,  0,  0],
      [ 0,  0,  1,  0,  0],
      [ 0,  0, -1,  0,  1]],

     [[ 1,  1, -1, -1,  0],
      [ 0,  0,  0,  1,  1],
      [-1, -1, -1,  0,  0],
      [ 0, -1,  0,  0,  0]],

     [[ 0, -1,  0,  0,  0],
      [-1,  0,  0,  0,  0],
      [ 1,  0,  0, -1,  0],
      [-1,  0,  0,  0,  0]]]
  y: shape=(3, 4, 5), dtype=int8
    [[[-1,  0,  1,  0,  0],
      [ 0,  1,  0,  0,  0],
      [ 0, -1,  0,  0,  0],
      [ 0,  1,  0,  0,  0]],

     [[ 0,  0,  0,  0,  0],
      [ 0,  0, -1,  0,  0],
      [ 0,  0,  0, -1,  0],
      [ 0,  0,  0,  0,  2]],

     [[ 1,  0,  0,  0,  0],
      [ 0,  0,  0,  0,  0],
      [ 0,  0,  0,  0, -1],
      [ 1,  0,  0, -1,  1]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[False, False,  True, False,  True],
      [False,  True, False, False, False],
      [False, False, False, False, False],
      [False,  True,  True, False, False]],

     [[False, False,  True,  True, False],
      [False, False, False, False, False],
      [ True,  True,  True, False, False],
      [False,  True, False, False,  True]],

     [[ True,  True, False, False, False],
      [ True, False, False, False, False],
      [False, False, False,  True, False],
      [ True, False, False, False,  True]]]

test_less_uint16

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=uint16
    [[[ 1, 14,  4, 20,  8],
      [13, 23,  2, 19, 22],
      [19,  2, 19,  0, 12],
      [ 8, 18, 14, 17,  7]],

     [[20, 12, 17, 11,  5],
      [12,  1,  5, 19,  5],
      [ 6,  6, 14,  1, 20],
      [14, 23,  4,  1,  6]],

     [[15,  6,  6, 15, 13],
      [ 1,  7, 21, 21, 17],
      [21, 14, 17,  3, 11],
      [23, 16,  4,  7,  8]]]
  y: shape=(3, 4, 5), dtype=uint16
    [[[ 2, 15,  0, 14, 12],
      [17,  6,  2, 12, 20],
      [18,  5, 22, 22, 11],
      [ 4,  4,  0,  6, 11]],

     [[22,  6,  2, 10,  5],
      [19, 11, 23, 14,  5],
      [12, 12, 12, 11, 13],
      [ 7, 23, 22,  4,  4]],

     [[ 4,  2,  6,  9,  8],
      [ 1, 14,  5, 10, 12],
      [13,  5,  0,  6, 13],
      [ 3,  1,  1, 10, 12]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[ True,  True, False, False,  True],
      [ True, False, False, False, False],
      [False,  True,  True,  True, False],
      [False, False, False, False,  True]],

     [[ True, False, False, False, False],
      [ True,  True,  True, False, False],
      [ True,  True, False,  True, False],
      [False, False,  True,  True, False]],

     [[False, False, False, False, False],
      [False,  True, False, False, False],
      [False, False, False,  True,  True],
      [False, False, False,  True,  True]]]

test_less_uint32

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=uint32
    [[[12,  8,  1,  1,  8],
      [12,  0, 16, 13, 18],
      [16,  9,  0,  1, 11],
      [14, 12,  9,  8,  9]],

     [[ 4,  5,  0,  4, 16],
      [12, 23,  4, 21,  6],
      [12, 20, 20, 18,  1],
      [22, 23, 11, 10, 12]],

     [[ 2,  8, 11,  6,  9],
      [ 5,  7, 18,  4, 18],
      [10, 15, 16,  6,  6],
      [ 8,  4,  0, 21,  6]]]
  y: shape=(3, 4, 5), dtype=uint32
    [[[15, 23, 11, 18, 23],
      [ 6,  3, 21, 19,  9],
      [ 7,  4,  4,  1,  3],
      [14,  4,  1,  5,  8]],

     [[ 2,  9,  3, 13,  8],
      [ 8,  7,  6,  2,  0],
      [11,  3, 22, 11,  1],
      [14, 17,  4, 15, 10]],

     [[ 7, 18,  7, 22, 18],
      [20,  5,  5,  5, 17],
      [15, 13,  7,  6, 19],
      [21,  5,  2, 21, 15]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[ True,  True,  True,  True,  True],
      [False,  True,  True,  True, False],
      [False, False,  True, False, False],
      [False, False, False, False, False]],

     [[False,  True,  True,  True, False],
      [False, False,  True, False, False],
      [False, False,  True, False, False],
      [False, False, False,  True, False]],

     [[ True,  True, False,  True,  True],
      [ True, False, False,  True, False],
      [ True, False, False, False,  True],
      [ True,  True,  True, False,  True]]]

test_less_uint64

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=uint64
    [[[17, 23,  7,  0, 22],
      [12, 15, 15, 17,  4],
      [16,  0,  7,  0,  6],
      [22, 12,  6, 19, 21]],

     [[ 8,  6, 19,  9,  2],
      [ 1, 10,  8,  6,  0],
      [14, 19, 16,  3,  3],
      [ 7,  4, 23, 22,  3]],

     [[ 8, 18, 16,  7,  7],
      [15, 19,  9,  0,  4],
      [ 9, 15,  3, 19, 17],
      [ 8, 10,  2,  5,  0]]]
  y: shape=(3, 4, 5), dtype=uint64
    [[[18,  4, 12, 15, 18],
      [ 2,  2, 11, 17,  1],
      [14,  6,  0, 16,  0],
      [ 2,  2,  7,  4,  0]],

     [[ 5, 12, 16, 13, 13],
      [17, 17, 15, 16,  2],
      [19, 18, 22,  0,  1],
      [ 4, 21, 12,  0,  4]],

     [[ 3, 22,  6, 21, 23],
      [23, 14, 21,  2, 21],
      [22, 23, 21, 17,  3],
      [ 8, 12,  4, 10, 23]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[ True, False,  True,  True, False],
      [False, False, False, False, False],
      [False,  True, False,  True, False],
      [False, False,  True, False, False]],

     [[False,  True, False,  True,  True],
      [ True,  True,  True,  True,  True],
      [ True, False,  True, False, False],
      [False,  True, False, False,  True]],

     [[False,  True, False,  True,  True],
      [ True, False,  True,  True,  True],
      [ True,  True,  True, False, False],
      [False,  True,  True,  True,  True]]]

test_less_uint8

Node:
  Less(x, y) -> (less)
Inputs:
  x: shape=(3, 4, 5), dtype=uint8
    [[[12, 17, 10,  0,  3],
      [14, 16, 20, 11,  1],
      [ 5, 14, 13,  4, 21],
      [18, 12,  8, 11,  5]],

     [[17, 10,  0, 18, 18],
      [ 4,  4,  1,  7, 19],
      [21, 22, 10,  6, 18],
      [ 6,  0, 11, 23,  6]],

     [[22, 21, 15, 12,  8],
      [ 1, 14, 20,  5, 17],
      [ 7, 16, 14, 20,  1],
      [16, 10,  6, 17,  8]]]
  y: shape=(3, 4, 5), dtype=uint8
    [[[23,  1, 19, 10,  3],
      [12, 21, 11,  7,  1],
      [ 7, 17,  1, 14,  7],
      [ 2,  8,  7, 12,  2]],

     [[14, 10,  2, 12, 13],
      [11,  2,  8,  7,  3],
      [15, 19,  3, 17, 16],
      [21, 11,  7,  5, 16]],

     [[ 1, 14,  9, 19,  0],
      [ 9,  1, 19, 15,  6],
      [ 0,  0, 15,  6, 17],
      [17,  2, 20,  1,  1]]]

Outputs:
  less: shape=(3, 4, 5), dtype=bool
    [[[ True, False,  True,  True, False],
      [False,  True, False, False, False],
      [ True,  True, False,  True, False],
      [False, False, False,  True, False]],

     [[False, False,  True, False, False],
      [ True, False,  True, False, False],
      [False, False, False,  True, False],
      [ True,  True, False, False,  True]],

     [[False, False, False,  True, False],
      [ True, False, False,  True, False],
      [False, False,  True, False,  True],
      [ True, False,  True, False, False]]]

Differences with previous version (9)#

SchemaDiff: Less (domain 'ai.onnx')

  • old version: 9

  • new version: 13

  • breaking: no

Type constraints:

  • changed ‘T’: added types: [‘tensor(bfloat16)’]

Version History#