From 72e056cee2ba0d95382ba63db85567e12b278bfa Mon Sep 17 00:00:00 2001 From: Thiago Crepaldi Date: Mon, 1 Aug 2022 20:36:38 -0400 Subject: [PATCH] Add debug info --- .../core/providers/cpu/tensor/col2im.cc | 83 ++++++++++-------- .../providers/cpu/tensor/col2im_attributes.h | 6 +- onnxruntime/core/util/math_cpu.cc | 83 ++++++++++++++---- onnxruntime/test/contrib_ops/col2im_test.cc | 28 ++++++ .../test_col2im/test_data_set_0/input_0.pb | Bin 0 -> 117 bytes .../test_col2im/test_data_set_0/input_1.pb | Bin 0 -> 35 bytes .../test_col2im/test_data_set_0/input_2.pb | Bin 0 -> 35 bytes .../test_col2im/test_data_set_0/output_0.pb | Bin 0 -> 120 bytes .../test_col2im_5d/test_data_set_0/input_0.pb | Bin 0 -> 498 bytes .../test_col2im_5d/test_data_set_0/input_1.pb | Bin 0 -> 43 bytes .../test_col2im_5d/test_data_set_0/input_2.pb | Bin 0 -> 43 bytes .../test_data_set_0/output_0.pb | Bin 0 -> 503 bytes .../test_data_set_0/input_0.pb | Bin 0 -> 97 bytes .../test_data_set_0/input_1.pb | Bin 0 -> 35 bytes .../test_data_set_0/input_2.pb | Bin 0 -> 35 bytes .../test_data_set_0/output_0.pb | Bin 0 -> 165 bytes .../test_data_set_0/input_0.pb | Bin 0 -> 318 bytes .../test_data_set_0/input_1.pb | Bin 0 -> 35 bytes .../test_data_set_0/input_2.pb | Bin 0 -> 35 bytes .../test_data_set_0/output_0.pb | Bin 0 -> 120 bytes .../test_data_set_0/input_0.pb | Bin 0 -> 162 bytes .../test_data_set_0/input_1.pb | Bin 0 -> 35 bytes .../test_data_set_0/input_2.pb | Bin 0 -> 35 bytes .../test_data_set_0/output_0.pb | Bin 0 -> 120 bytes 24 files changed, 140 insertions(+), 60 deletions(-) create mode 100644 onnxruntime/test/contrib_ops/col2im_test.cc create mode 100644 onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_1.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_2.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/output_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/input_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/input_1.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/input_2.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/output_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_1.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_2.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/output_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_1.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_2.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/output_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_0.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_1.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_2.pb create mode 100644 onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/output_0.pb diff --git a/onnxruntime/core/providers/cpu/tensor/col2im.cc b/onnxruntime/core/providers/cpu/tensor/col2im.cc index dd95327e62935..4c3f999766f5e 100644 --- a/onnxruntime/core/providers/cpu/tensor/col2im.cc +++ b/onnxruntime/core/providers/cpu/tensor/col2im.cc @@ -27,55 +27,60 @@ Status Col2Im::Compute(OpKernelContext* context) const { const auto* col_input = context->Input(0); const auto* image_shape = context->Input(1); const auto* kernel_shape = context->Input(2); + std::cout << "Status Col2Im::Compute(OpKernelContext* context)" << std::endl; - TensorShape col_shape = col_input->Shape(); - const auto num_image_channels = image_shape->Shape()[1]; - const auto batch_size = col_shape[0]; + const T* col_input_data = col_input->template Data(); + TensorShape col_input_shape = col_input->Shape(); + int64_t col_input_C = col_input_shape[1]; + const auto col_input_N = col_input_shape[0]; - const int64_t image_size = image_shape->Shape().Size(); - - AllocatorPtr alloc; - ORT_RETURN_IF_ERROR(context->GetTempSpaceAllocator(&alloc)); - const int64_t col_buffer_size = col_input->Shape().Size(); - auto col_data = alloc->Alloc(SafeInt(sizeof(T)) * col_buffer_size); - - BufferUniquePtr col_buffer(col_data, BufferDeleter(std::move(alloc))); - T* col_buffer_data = static_cast(col_buffer.get()); + int64_t image_shape_size = 1; + int64_t kernel_shape_size = 1; + for (auto i=0; i < image_shape->Shape().Size(); ++i) { + image_shape_size *= image_shape->Data()[i]; + kernel_shape_size *= kernel_shape->Data()[i]; + // col_input_C computed as => (C*n-ary-prod{kernel_shape}) / n-ary-prod{kernel_shape} + col_input_C /= kernel_shape->Data()[i]; + } TensorShapeVector Y_dims; - Y_dims.insert(Y_dims.begin(), {batch_size, num_image_channels}); + Y_dims.insert(Y_dims.begin(), {col_input_N, col_input_C}); + for (auto i=0; i < image_shape->Shape()[0]; ++i) { + Y_dims.push_back(image_shape->Data()[i]); + } TensorShape Yshape(Y_dims); Tensor* Y = context->Output(0, Yshape); T* Ydata = Y->template MutableData(); - // template - // void Col2imNd( - // const T* data_col, - // const int64_t* img_shape, - // const int64_t* output_shape, - // int64_t channels_col, - // int64_t img_size, - // const int64_t* kernel_shape, - // const int64_t* stride, - // const int64_t* dilation, - // const int64_t* pad, - // ptrdiff_t N, - // T* data_img, - // Provider* provider); + std::cout << "\n\tInput 0: col_input = ("; for (auto i=0; i < Yshape.Size(); ++i) std::cout << col_input_data[i] << ", "; std::cout << ") with shape "<< Yshape << std::endl; + std::cout << "\tInput 1: image_shape = ("; for (auto i=0; i < image_shape->Shape().Size(); ++i) std::cout << image_shape->Data()[i] << ", "; std::cout << ")" << std::endl; + std::cout << "\tInput 2: kernel_shape = ("; for (auto i=0; i < kernel_shape->Shape().Size(); ++i) std::cout << kernel_shape->Data()[i] << ", "; std::cout << ")" << std::endl; + std::cout << "\tAttribute strides = ("; for (size_t i=0; i < col2im_attrs_.strides.size(); ++i) std::cout << col2im_attrs_.strides[i] << ", "; std::cout << ")"<< std::endl; + std::cout << "\tAttribute dilations = ("; for (size_t i=0; i < col2im_attrs_.dilations.size(); ++i) std::cout << col2im_attrs_.dilations[i] << ", "; std::cout << ")"<< std::endl; + std::cout << "\tAttribute pads = ("; for (size_t i=0; i < col2im_attrs_.pads.size(); ++i) std::cout << col2im_attrs_.pads[i] << ", "; std::cout << ")"<< std::endl; + + std::cout << "\tVariable col_input_C: " << col_input_C << std::endl; + std::cout << "\tVariable col_input_N = " << col_input_N << std::endl; + std::cout << "\tVariable image_shape_size: " << image_shape_size << std::endl; + std::cout << "\tVariable kernel_shape_size: " << kernel_shape_size << std::endl; + + std::cout << "\n\tStatus Col2Im::Compute() --> math::Col2imNd<>()" << std::endl; math::Col2imNd( - col_buffer_data, - image_shape->Shape().GetDims().data(), - col_shape.GetDims().data(), - num_image_channels, - image_size, - kernel_shape->Shape().GetDims().data(), - col2im_attrs_.strides.data(), - col2im_attrs_.dilations.data(), - col2im_attrs_.pads.data(), - static_cast(kernel_shape->Shape().Size()), - Ydata, - &CPUMathUtil::Instance()); + col_input_data, // const T* data_col, + image_shape->Data(), // const int64_t* img_shape, + Yshape.Slice(2).GetDims().data(), // const int64_t* output_shape, + col_input_C, // int64_t channels_col, --> output_num_channels * kernel_shape_size + image_shape_size, // int64_t img_size, + kernel_shape->Data(), // const int64_t* kernel_shape, + col2im_attrs_.strides.data(), // const int64_t* stride, + col2im_attrs_.dilations.data(), // const int64_t* dilation, + col2im_attrs_.pads.data(), // const int64_t* pad, + kernel_shape->Shape().Size(), // ptrdiff_t N, --> number of spatial dims for image + Ydata, // T* data_img, + &CPUMathUtil::Instance() // Provider* provider + ); + std::cout << "\n\n Return Col2Im::Compute() --> "; for (auto i=0; i < Yshape.Size(); ++i) std::cout << Ydata[i] << ", "; std::cout << ") with shape " << Yshape << std::endl << std::endl; return Status::OK(); } diff --git a/onnxruntime/core/providers/cpu/tensor/col2im_attributes.h b/onnxruntime/core/providers/cpu/tensor/col2im_attributes.h index 299bd533296f5..9639718db5ecf 100644 --- a/onnxruntime/core/providers/cpu/tensor/col2im_attributes.h +++ b/onnxruntime/core/providers/cpu/tensor/col2im_attributes.h @@ -34,15 +34,15 @@ struct Col2ImAttributes { explicit Col2ImAttributes(const OpKernelInfo& info) { auto status = info.GetAttrs("strides", strides); - ORT_ENFORCE(status.IsOK()); + // ORT_ENFORCE(status.IsOK()); gsl::span pads_span; status = info.GetAttrsAsSpan("pads", pads_span); - ORT_ENFORCE(status.IsOK()); + // ORT_ENFORCE(status.IsOK()); pads.assign(pads_span.cbegin(), pads_span.cend()); status = info.GetAttrs("dilations", dilations); - ORT_ENFORCE(status.IsOK()); + // ORT_ENFORCE(status.IsOK()); } ~Col2ImAttributes() = default; diff --git a/onnxruntime/core/util/math_cpu.cc b/onnxruntime/core/util/math_cpu.cc index 164e88573c4cb..05b265715e407 100644 --- a/onnxruntime/core/util/math_cpu.cc +++ b/onnxruntime/core/util/math_cpu.cc @@ -31,6 +31,7 @@ #pragma GCC diagnostic pop #endif using onnxruntime::concurrency::ThreadPool; +#include namespace onnxruntime { namespace math { @@ -370,7 +371,27 @@ void Im2col::operator()( T* data_col, bool accumulate_output, T padding_value) { - int64_t kernel_size = std::accumulate(kernel_shape, kernel_shape + rank, 1LL, std::multiplies()); + + int64_t im_shape_size = std::accumulate(im_shape, im_shape + rank, 1LL, std::multiplies()); + int64_t output_shape_size = std::accumulate(output_shape, output_shape + rank, 1LL, std::multiplies()); + int64_t kernel_shape_size = std::accumulate(kernel_shape, kernel_shape + rank, 1LL, std::multiplies()); + + std::cout << "\n\nCalled void Im2col::operator()("; + std::cout << ",\n\tconst T* data_im={"; for (auto i=0; i < im_shape_size; ++i) std::cout << data_im[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* im_shape={"; for (auto i=0; i < rank; ++i) std::cout << im_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* output_shape={"; for (auto i=0; i < rank; ++i) std::cout << output_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tint64_t channels_col=" << channels_col; + std::cout << ",\n\tconst int64_t* kernel_shape={"; for (auto i=0; i < rank; ++i) std::cout << kernel_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* stride={"; for (auto i=0; i < rank; ++i) std::cout << stride[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* dilation={"; for (auto i=0; i < rank; ++i) std::cout << dilation[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* pad={"; for (auto i=0; i < rank; ++i) std::cout << pad[i] << ", "; std::cout << "}"; + std::cout << ",\n\tptrdiff_t rank=" << rank; + std::cout << ",\n\tT* data_col= preallocated pointer to write at {"; for (auto i=0; i < output_shape_size; ++i) std::cout << data_col[i] << ", "; std::cout << "}"; + std::cout << ",\n\tbool accumulate_output=" << accumulate_output; + std::cout << ",\n\tT padding_value=" << padding_value << ")"; + + std::cout << "\n\n\tVariable im_shape_size: " << im_shape_size << "\n\tVariable output_shape_size: "< d_offset(rank, 0); std::vector d_iter(rank, 0); for (int64_t c_col = 0; c_col < channels_col; ++c_col) { @@ -386,7 +407,7 @@ void Im2col::operator()( // Loop over spatial axes in forward order to compute the indices in the // image and column, and whether the index lies in the padding. int64_t index_col = c_col; - int64_t index_im = c_col / kernel_size; + int64_t index_im = c_col / kernel_shape_size; bool is_padding = false; for (ptrdiff_t d_i = 0; d_i < rank; ++d_i) { int64_t d = d_iter[d_i]; @@ -408,6 +429,8 @@ void Im2col::operator()( } } while (NextPosition(rank, output_shape, d_iter.data())); } // for (int c = 0; c < channels_col; ++c) { + + std::cout << "Return void Im2col -> T* data_col={"; for (auto i=0; i < output_shape_size; ++i) std::cout << data_col[i] << ", "; std::cout << "}\n"; } template struct Im2col; @@ -780,24 +803,48 @@ void Col2im(const float* data_col, int64 } template <> -void Col2imNd(const float* data_col, const int64_t* img_shape, - const int64_t* output_shape, int64_t channels_col, int64_t img_size, - const int64_t* kernel_shape, const int64_t* stride, - const int64_t* dilation, const int64_t* pad, ptrdiff_t N, - float* data_img, CPUMathUtil* context) { +void Col2imNd(const float* data_col, + const int64_t* img_shape, + const int64_t* output_shape, + int64_t channels_col, + int64_t img_size, + const int64_t* kernel_shape, + const int64_t* stride, + const int64_t* dilation, + const int64_t* pad, + ptrdiff_t N, + float* data_img, + CPUMathUtil* context) { + std::cout << "\n\nCalled void Col2imNd("; + std::cout << ",\n\tconst float* data_col={"; for (auto i=0; i < img_size; ++i) std::cout << data_col[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* img_shape={"; for (auto i=0; i < N; ++i) std::cout << img_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* output_shape={"; for (auto i=0; i < N; ++i) std::cout << output_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tint64_t channels_col=" << channels_col; + std::cout << ",\n\tint64_t img_size=" << img_size; + std::cout << ",\n\tconst int64_t* kernel_shape={"; for (auto i=0; i < N; ++i) std::cout << kernel_shape[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* stride={"; for (auto i=0; i < N; ++i) std::cout << stride[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* dilation={"; for (auto i=0; i < N; ++i) std::cout << dilation[i] << ", "; std::cout << "}"; + std::cout << ",\n\tconst int64_t* pad={"; for (auto i=0; i < 2*N; ++i) std::cout << pad[i] << ", "; std::cout << "}"; + std::cout << ",\n\tptrdiff_t N=" << N; + std::cout << ",\n\tfloat* data_img= preallocated pointer to save at {"; for (auto i=0; i < img_size; ++i) std::cout << data_img[i] << ", "; std::cout << "}"; + std::cout << ",\n\tCPUMathUtil* context=...)" << std::endl; + Set(gsl::narrow(img_size), 0, data_img, context); Im2col()( - data_col, - img_shape, - output_shape, - channels_col, - kernel_shape, - stride, - dilation, - pad, - N, - data_img, - true); + data_col, // const T* data_im, + img_shape, // const int64_t* im_shape, + output_shape, // const int64_t* output_shape, + channels_col, // int64_t channels_col, + kernel_shape, // const int64_t* kernel_shape, + stride, // const int64_t* stride, + dilation, // const int64_t* dilation, + pad, // const int64_t* pad, + N, // ptrdiff_t rank, + data_img, // T* data_col, + true // bool accumulate_output, + ); + + std::cout << "Return void Col2imNd --> float* data_img= {"; for (auto i=0; i < img_size; ++i) std::cout << data_img[i] << ", "; std::cout << "}"; } #define SPECIALIZED_COPYVECTOR(T) \ diff --git a/onnxruntime/test/contrib_ops/col2im_test.cc b/onnxruntime/test/contrib_ops/col2im_test.cc new file mode 100644 index 0000000000000..2a1b692673fc5 --- /dev/null +++ b/onnxruntime/test/contrib_ops/col2im_test.cc @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +#include "gtest/gtest.h" +#include "test/providers/provider_test_utils.h" +#include "core/util/math.h" + +namespace onnxruntime { +namespace test { + +TEST(Col2ImContribOpTest, simple) { + OpTester test("Col2Im", 1, kMSDomain); + + test.AddAttribute("strides", std::vector{1, 1}); + test.AddAttribute("dilations", std::vector{1, 1}); + test.AddAttribute("pads", std::vector{0, 0, 0, 0}); + + test.AddInput("input", {1, 5, 5}, std::vector{1.f, 6.f, 11.f, 16.f, 21.f, 2.f, 7.f, 12.f, 17.f, 22.f, 3.f, 8.f, 13.f, 18.f, 23.f, 4.f, 9.f, 14.f, 19.f, 24.f, 5.f, 0.f, 15.f, 20.f, 25.f}); + test.AddInput("image_shape", {2}, std::vector{5, 5}); + test.AddInput("block_shape", {2}, std::vector{1, 5}); + + test.AddOutput("output", {1, 1, 5, 5}, std::vector{1.f, 2.f, 3.f, 4.f, 5.f, 6.f, 7.f, 8.f, 9.f, 10.f, 11.f, 12.f, 13.f, 14.f, 15.f, 16.f, 17.f, 18.f, 19.f, 20.f, 21.f, 22.f, 23.f, 24.f, 25.f}); + test.Run(); +} + + +} // namespace test +} // namespace onnxruntime diff --git a/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_0.pb b/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_0.pb new file mode 100644 index 0000000000000000000000000000000000000000..164166b2c84e8c0968a316c70ceb85e9b5fea07e GIT binary patch literal 117 zcmd;J@x2I3Qr0LGRS@&Et; literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_1.pb b/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_1.pb new file mode 100644 index 0000000000000000000000000000000000000000..e2e47c174ce48b0b6cc775ccbad84426c3925a39 GIT binary patch literal 35 fcmd;J5@2`Y&dg0rPmM3mNGwS85@2P302mDbe=`L} literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_2.pb b/onnxruntime/test/python/testdata/node/test_col2im/test_data_set_0/input_2.pb new file mode 100644 index 0000000000000000000000000000000000000000..c0b7595628c4bb8bd1859c490f6242ca6bdbf7cc GIT binary patch literal 35 gcmd;J5@2`YPRhwo&WQoO#oXPz20+Gu0V(5@+l l6vss*_afp583h$D#EV$`>v)F=GXgR;>^M+x;=+xJ$A70x6@35z literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/input_0.pb b/onnxruntime/test/python/testdata/node/test_col2im_5d/test_data_set_0/input_0.pb new file mode 100644 index 0000000000000000000000000000000000000000..0b66e3fbccc21c2a88060142326527a6fd6ca537 GIT binary patch literal 498 zcmWm4F(?FJ0EXfJLR~W4U@#aA27|$1Fev9TNQN5>27|#sNjID_7%oYYBuST~OVTAt zk}gS?q)U<{U6L+Il60fdV|ePT_lriN_0fh{BvCgpm6}cuRBA%V^n_51htSb$ljoja zVu=u1>0*#kf^UVmzQ_?}g4ReI-6R~B!C){L32vFx)ItN!|DNQDqHveCFrHrryWZMNHC!cM#FHff*z z4m#wpBaS-exD!sAHsg%5W}S211s7d%*%foHy5_nYZo1{Rd3W4(&w~3Nc<7PGo_K1} nGta%SCh$jHC c1Caj!hz)@30wA6N#0@|`14s_U2I2*d02b*GVE_OC literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_1.pb b/onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_1.pb new file mode 100644 index 0000000000000000000000000000000000000000..ed056b38ede071201a58c4d489ee72565a9de9e6 GIT binary patch literal 35 fcmd;J5@2`Y&dg0rPmM3mNGwS85@2J102mDbe@g{O literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_2.pb b/onnxruntime/test/python/testdata/node/test_col2im_dilations/test_data_set_0/input_2.pb new file mode 100644 index 0000000000000000000000000000000000000000..ea04f67ddf5b80dd13a9f42589cd7104b5e46f7a GIT binary patch literal 35 fcmd;J5@2`YPRhwo&Wm@T6DQ&$b=c0U)Xk;@xhu+-7W|J8_u|5#FQsW-_*9pD@(pf jbbB;7=A0W!?s;bJTeB^g^T`iex*CU^a6!Qx54_}m`4%=I literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_1.pb b/onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_1.pb new file mode 100644 index 0000000000000000000000000000000000000000..e2e47c174ce48b0b6cc775ccbad84426c3925a39 GIT binary patch literal 35 fcmd;J5@2`Y&dg0rPmM3mNGwS85@2P302mDbe=`L} literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_2.pb b/onnxruntime/test/python/testdata/node/test_col2im_pads/test_data_set_0/input_2.pb new file mode 100644 index 0000000000000000000000000000000000000000..c0b7595628c4bb8bd1859c490f6242ca6bdbf7cc GIT binary patch literal 35 gcmd;J5@2`YPRhwo&W&l+oNV1vjM r;ppbc&GjHDmpl$!=n)svf(<)5thn*ug~y4clu~5)pJ;^!Eu!)RQ05ig literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_0.pb b/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_0.pb new file mode 100644 index 0000000000000000000000000000000000000000..f33a7620e97e8b2934587759212fbf1350d5effd GIT binary patch literal 162 qcmd;J=_tH!59V*5I{E@RXG6prw@7n literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_1.pb b/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_1.pb new file mode 100644 index 0000000000000000000000000000000000000000..e2e47c174ce48b0b6cc775ccbad84426c3925a39 GIT binary patch literal 35 fcmd;J5@2`Y&dg0rPmM3mNGwS85@2P302mDbe=`L} literal 0 HcmV?d00001 diff --git a/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_2.pb b/onnxruntime/test/python/testdata/node/test_col2im_strides/test_data_set_0/input_2.pb new file mode 100644 index 0000000000000000000000000000000000000000..19b497c93ccceed2813a63a90e568d62835d8ed1 GIT binary patch literal 35 fcmd;J5@2`YPRhwo&W