in onnxconverter_common/onnx_fx.py [0:0]
def __getitem__(self, indices):
# normalize indices to tuples of slices
# Formats encountered:
# - a single int
# - a tuple of (int or slice)
if not isinstance(indices, (tuple, list)): # single item: make it a tuple
indices = (indices,)
squeeze = [axis for axis, index in enumerate(indices) if
isinstance(index, int)] # which axes had a single index?
indices = tuple(
index if isinstance(index, slice) else slice(index, index + 1 if index != -1 else None, 1) for index in
indices) # make all tuple items of type Slice
bs, es, ss, ds = [], [], [], []
INT_MAX = 2 ** 63 - 1
for axis, index in enumerate(indices):
if not isinstance(index, slice):
raise ValueError("Index expected")
if index.start is None and index.stop is None: # [:] can be skipped
continue
b, e, s = index.start, index.stop, index.step
bs.append(b if b is not None else 0)
es.append(e if e is not None else INT_MAX)
ss.append(s if s is not None else 1)
ds.append(axis)
res = self.ox.slice(self, starts=bs, ends=es, axes=ds, steps=ss)
if squeeze: # single index means we must drop the axis
res = self.ox.squeeze([res], axes=squeeze)
return res