def apply_slice()

in onnxconverter_common/onnx_ops.py [0:0]


def apply_slice(scope, input_name, output_name, container, starts, ends,
                axes=None, steps=None, operator_name=None):
    name = _create_name_or_use_existing_one(scope, 'Slice', operator_name)

    if container.target_opset < 10:
        if axes is None:
            container.add_node('Slice', input_name, output_name, name=name,
                               starts=starts, ends=ends, op_version=1)
        else:
            container.add_node('Slice', input_name, output_name, name=name,
                               starts=starts, ends=ends, axes=axes, op_version=1)
    else:
        if container.target_opset == 10:
            op_version = 10
        else:
            op_version = 11
        inputs = input_name if isinstance(input_name, list) else [input_name]
        if isinstance(starts, str):
            starts_name = starts
        else:
            starts_name = scope.get_unique_variable_name('starts')
            container.add_initializer(starts_name, onnx_proto.TensorProto.INT64,
                                      [len(starts)], starts)

        if isinstance(ends, str):
            ends_name = ends
        else:
            ends_name = scope.get_unique_variable_name('ends')
            container.add_initializer(ends_name, onnx_proto.TensorProto.INT64,
                                      [len(ends)], ends)

        inputs.append(starts_name)
        inputs.append(ends_name)
        if axes:
            if isinstance(axes, str):
                axes_name = axes
            else:
                axes_name = scope.get_unique_variable_name('axes')
                container.add_initializer(axes_name, onnx_proto.TensorProto.INT64,
                                          [len(axes)], axes)
            inputs.append(axes_name)
        if steps:
            if not axes:
                inputs.append('')
            if isinstance(steps, str):
                steps_name = steps
            else:
                steps_name = scope.get_unique_variable_name('steps')
                container.add_initializer(steps_name, onnx_proto.TensorProto.INT64,
                                          [len(steps)], steps)
            inputs.append(steps_name)
        container.add_node('Slice', inputs, output_name, name=name,
                           op_version=op_version)