Slice#
Domain:
ai.onnxSince version: 13
Produces a slice of the input tensor along multiple axes.
Inputs
data (T): Tensor of data to extract slices from.
starts (Tind): 1-D tensor of starting indices of corresponding axis in
axesends (Tind): 1-D tensor of ending indices (exclusive) of corresponding axis in
axesaxes (Tind): 1-D tensor of axes that
startsandendsapply to. Negative value means counting dimensions from the back. Accepted range is [-r, r-1] where r = rank(data). Behavior is undefined if an axis is repeated.steps (Tind): 1-D tensor of slice step of corresponding axis in
axes. Negative value means slicing backward. ‘steps’ cannot be 0. Defaults to 1s.
Outputs
output (T): Sliced data tensor.
Type Constraints
T: Constrain input and output types to all tensor types. Allowed types: tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8).
Tind: Constrain indices to integer types Allowed types: tensor(int32), tensor(int64).
Examples#
test_cc_shape_inference_slice_symbolic_end
Node:
Slice(X, starts, ends, axes) -> (sliced)
Inputs:
X: shape=(2, 3, 4), dtype=float32
[[[ 1., 2., 3., 4.],
[ 5., 6., 7., 8.],
[ 9., 10., 11., 12.]],
[[13., 14., 15., 16.],
[17., 18., 19., 20.],
[21., 22., 23., 24.]]]
Outputs:
sliced: shape=(2, 3, 3), dtype=float32
[[[ 1., 2., 3.],
[ 5., 6., 7.],
[ 9., 10., 11.]],
[[13., 14., 15.],
[17., 18., 19.],
[21., 22., 23.]]]
test_cc_slice
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(2,), dtype=int64
[0, 0]
ends: shape=(2,), dtype=int64
[ 3, 10]
axes: shape=(2,), dtype=int64
[0, 1]
steps: shape=(2,), dtype=int64
[1, 1]
Outputs:
output: shape=(3, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]]]
test_cc_slice_axes_steps
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(2, 4), dtype=float32
[[1., 2., 3., 4.],
[5., 6., 7., 8.]]
starts: shape=(2,), dtype=int64
[1, 0]
ends: shape=(2,), dtype=int64
[2, 3]
axes: shape=(2,), dtype=int64
[0, 1]
steps: shape=(2,), dtype=int64
[1, 2]
Outputs:
output: shape=(1, 2), dtype=float32
[[5., 7.]]
test_cc_slice_default_axes_steps
Node:
Slice(data, starts, ends) -> (output)
Inputs:
data: shape=(2, 4), dtype=float32
[[1., 2., 3., 4.],
[5., 6., 7., 8.]]
starts: shape=(2,), dtype=int64
[0, 1]
ends: shape=(2,), dtype=int64
[ -1, 1000]
Outputs:
output: shape=(1, 3), dtype=float32
[[2., 3., 4.]]
test_cc_slice_default_steps
Node:
Slice(data, starts, ends, axes) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(3,), dtype=int64
[0, 0, 3]
ends: shape=(3,), dtype=int64
[20, 10, 4]
axes: shape=(3,), dtype=int64
[0, 1, 2]
Outputs:
output: shape=(20, 10, 1), dtype=float32
[[[ 3.],
[ 8.],
[ 13.],
...,
[ 38.],
[ 43.],
[ 48.]],
[[ 53.],
[ 58.],
[ 63.],
...,
[ 88.],
[ 93.],
[ 98.]],
[[103.],
[108.],
[113.],
...,
[138.],
[143.],
[148.]],
...,
[[853.],
[858.],
[863.],
...,
[888.],
[893.],
[898.]],
[[903.],
[908.],
[913.],
...,
[938.],
[943.],
[948.]],
[[953.],
[958.],
[963.],
...,
[988.],
[993.],
[998.]]]
test_cc_slice_end_out_of_bounds
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(1,), dtype=int64
[1]
ends: shape=(1,), dtype=int64
[1000]
axes: shape=(1,), dtype=int64
[1]
steps: shape=(1,), dtype=int64
[1]
Outputs:
output: shape=(20, 9, 5), dtype=float32
[[[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
[ 65., 66., 67., 68., 69.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
[115., 116., 117., 118., 119.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
[865., 866., 867., 868., 869.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
[915., 916., 917., 918., 919.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
[965., 966., 967., 968., 969.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
test_cc_slice_neg
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(1,), dtype=int64
[0]
ends: shape=(1,), dtype=int64
[-1]
axes: shape=(1,), dtype=int64
[1]
steps: shape=(1,), dtype=int64
[1]
Outputs:
output: shape=(20, 9, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 30., 31., 32., 33., 34.],
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 80., 81., 82., 83., 84.],
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[130., 131., 132., 133., 134.],
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[880., 881., 882., 883., 884.],
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[930., 931., 932., 933., 934.],
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[980., 981., 982., 983., 984.],
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.]]]
test_cc_slice_neg_steps
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(3,), dtype=int64
[20, 10, 4]
ends: shape=(3,), dtype=int64
[0, 0, 1]
axes: shape=(3,), dtype=int64
[0, 1, 2]
steps: shape=(3,), dtype=int64
[-1, -3, -2]
Outputs:
output: shape=(19, 3, 2), dtype=float32
[[[999., 997.],
[984., 982.],
[969., 967.]],
[[949., 947.],
[934., 932.],
[919., 917.]],
[[899., 897.],
[884., 882.],
[869., 867.]],
...,
[[199., 197.],
[184., 182.],
[169., 167.]],
[[149., 147.],
[134., 132.],
[119., 117.]],
[[ 99., 97.],
[ 84., 82.],
[ 69., 67.]]]
test_cc_slice_negative_axes
Node:
Slice(data, starts, ends, axes) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(3,), dtype=int64
[0, 0, 3]
ends: shape=(3,), dtype=int64
[20, 10, 4]
axes: shape=(3,), dtype=int64
[ 0, -2, -1]
Outputs:
output: shape=(20, 10, 1), dtype=float32
[[[ 3.],
[ 8.],
[ 13.],
...,
[ 38.],
[ 43.],
[ 48.]],
[[ 53.],
[ 58.],
[ 63.],
...,
[ 88.],
[ 93.],
[ 98.]],
[[103.],
[108.],
[113.],
...,
[138.],
[143.],
[148.]],
...,
[[853.],
[858.],
[863.],
...,
[888.],
[893.],
[898.]],
[[903.],
[908.],
[913.],
...,
[938.],
[943.],
[948.]],
[[953.],
[958.],
[963.],
...,
[988.],
[993.],
[998.]]]
test_cc_slice_start_out_of_bounds
Node:
Slice(data, starts, ends, axes, steps) -> (output)
Inputs:
data: shape=(20, 10, 5), dtype=float32
[[[ 0., 1., 2., 3., 4.],
[ 5., 6., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
...,
[ 35., 36., 37., 38., 39.],
[ 40., 41., 42., 43., 44.],
[ 45., 46., 47., 48., 49.]],
[[ 50., 51., 52., 53., 54.],
[ 55., 56., 57., 58., 59.],
[ 60., 61., 62., 63., 64.],
...,
[ 85., 86., 87., 88., 89.],
[ 90., 91., 92., 93., 94.],
[ 95., 96., 97., 98., 99.]],
[[100., 101., 102., 103., 104.],
[105., 106., 107., 108., 109.],
[110., 111., 112., 113., 114.],
...,
[135., 136., 137., 138., 139.],
[140., 141., 142., 143., 144.],
[145., 146., 147., 148., 149.]],
...,
[[850., 851., 852., 853., 854.],
[855., 856., 857., 858., 859.],
[860., 861., 862., 863., 864.],
...,
[885., 886., 887., 888., 889.],
[890., 891., 892., 893., 894.],
[895., 896., 897., 898., 899.]],
[[900., 901., 902., 903., 904.],
[905., 906., 907., 908., 909.],
[910., 911., 912., 913., 914.],
...,
[935., 936., 937., 938., 939.],
[940., 941., 942., 943., 944.],
[945., 946., 947., 948., 949.]],
[[950., 951., 952., 953., 954.],
[955., 956., 957., 958., 959.],
[960., 961., 962., 963., 964.],
...,
[985., 986., 987., 988., 989.],
[990., 991., 992., 993., 994.],
[995., 996., 997., 998., 999.]]]
starts: shape=(1,), dtype=int64
[1000]
ends: shape=(1,), dtype=int64
[1000]
axes: shape=(1,), dtype=int64
[1]
steps: shape=(1,), dtype=int64
[1]
Outputs:
output: shape=(20, 0, 5), dtype=float32
[]