diff --git a/testdata/dnn/onnx/data/input_slice_neg_starts.npy b/testdata/dnn/onnx/data/input_slice_neg_starts.npy index 796895eaf4fe024771dfd342b3d2cb005fe6123f..7360d81acdb9d6778235e84fab0ef63b481cadc1 100644 Binary files a/testdata/dnn/onnx/data/input_slice_neg_starts.npy and b/testdata/dnn/onnx/data/input_slice_neg_starts.npy differ diff --git a/testdata/dnn/onnx/data/output_slice_neg_starts.npy b/testdata/dnn/onnx/data/output_slice_neg_starts.npy index 796895eaf4fe024771dfd342b3d2cb005fe6123f..eaba197b67f201933a55cbfddde14d6f113acee9 100644 Binary files a/testdata/dnn/onnx/data/output_slice_neg_starts.npy and b/testdata/dnn/onnx/data/output_slice_neg_starts.npy differ diff --git a/testdata/dnn/onnx/generate_onnx_models.py b/testdata/dnn/onnx/generate_onnx_models.py index b930c84d22d0ba57541dd6a5a271fc1cae39aace..47b1cc88738d7be91783d7921588c1df148db63f 100644 --- a/testdata/dnn/onnx/generate_onnx_models.py +++ b/testdata/dnn/onnx/generate_onnx_models.py @@ -434,16 +434,49 @@ model = Slice() save_data_and_model("slice", input, model) save_data_and_model("slice_opset_11", input, model, version=11) -class SliceStarts(nn.Module): - def __init__(self, *args, **kwargs): - super(SliceStarts, self).__init__() +def generate_slice_neg_starts(): + x = np.random.randn(2, 3, 4, 3).astype(np.float32) + y = x[-1:2, -3:-1, 2:3, 1:-1] - def forward(self, x): - return x[-1:] + starts = np.array([-1, -3, 2, 1], dtype=np.int64) + starts = onnx.numpy_helper.from_array(starts, name='starts') + ends = np.array([ 2, -1, 3, -1], dtype=np.int64) + ends = onnx.numpy_helper.from_array(ends, name='ends') -model = SliceStarts() -input_ = Variable(torch.randn(1, 10, dtype=torch.float32)) -save_data_and_model("slice_neg_starts", input_, model) + node = onnx.helper.make_node( + 'Slice', + inputs=['X', 'starts', 'ends'], + outputs=['Y'], + ) + + X = onnx.helper.make_tensor_value_info('X', onnx.TensorProto.FLOAT, list(x.shape)) + Y = onnx.helper.make_tensor_value_info('Y', onnx.TensorProto.FLOAT, list(y.shape)) + + graph = onnx.helper.make_graph( + [node], # nodes + 'slice_neg_starts', # name + [X], # inputs + [Y], # outputs + ) + + graph.initializer.append(starts) + graph.initializer.append(ends) + + model = onnx.helper.make_model(graph, producer_name='onnx') + onnx.checker.check_model(model) + + name = 'slice_neg_starts' + + input_files = os.path.join("data", "input_" + name) + np.save(input_files, x.data) + + output_files = os.path.join("data", "output_" + name) + np.save(output_files, np.ascontiguousarray(y.data)) + + models_files = os.path.join("models", name + ".onnx") + onnx.save(model, models_files) + +generate_slice_neg_starts() input_2 = Variable(torch.randn(6, 6)) custom_slice_list = [ diff --git a/testdata/dnn/onnx/models/slice_neg_starts.onnx b/testdata/dnn/onnx/models/slice_neg_starts.onnx index 07c0c9966cd4d882eb8854de6b1035cc442c10c5..ac41c39cef100de6403d0751fc2011fa58a253fe 100644 Binary files a/testdata/dnn/onnx/models/slice_neg_starts.onnx and b/testdata/dnn/onnx/models/slice_neg_starts.onnx differ