diff --git a/tmva/sofie/inc/TMVA/ROperator_Conv.hxx b/tmva/sofie/inc/TMVA/ROperator_Conv.hxx index 78c1dcebc8030..be18559fddc69 100644 --- a/tmva/sofie/inc/TMVA/ROperator_Conv.hxx +++ b/tmva/sofie/inc/TMVA/ROperator_Conv.hxx @@ -454,6 +454,7 @@ public: // trick for speed is using caffe im2col and output a matrix which contains filtered values as rows. // By doing this one has consecutive memory reads and writes // Resulting matrix op_xcol is (input channels * filter_h * filter_w , output_h * output_w) + // The generated filter tensor is already expanded for fAttrDilations, so Im2col scans it contiguously. if (fDim ==1) { if (fAttrPads[0] != fAttrPads[1] ) { std::cout << "TMVA SOFIE Operator Conv: asymmetric padding not supported. Assume an average padding " @@ -493,11 +494,10 @@ public: << fShapeW[1] << "," << iHeight << "," << iWidth << ","; if (fDim == 1) out << "1, " << fAttrKernelShape[0] << ",0," << fAttrPads[0] << ",1," << fAttrStrides[0] << ",1," - << fAttrDilations[0]; + << 1; else // dim ==2 out << fAttrKernelShape[0] << "," << fAttrKernelShape[1] << "," << fAttrPads[0] << "," << fAttrPads[1] - << "," << fAttrStrides[0] << "," << fAttrStrides[1] << "," << fAttrDilations[0] << "," - << fAttrDilations[1]; + << "," << fAttrStrides[0] << "," << fAttrStrides[1] << ",1,1"; out << "," << "tensor_" < input(49); + std::iota(input.begin(), input.end(), 0.0f); + ASSERT_INCLUDE_AND_RUN(std::vector, "ConvWithDilation", input); + + EXPECT_EQ(output.size(), std::size(ConvWithDilation_ExpectedOutput::outputs)); + + float *correct = ConvWithDilation_ExpectedOutput::outputs; + + for (size_t i = 0; i < output.size(); ++i) { + EXPECT_LE(std::abs(output[i] - correct[i]), TOLERANCE); + } +} TEST(ONNX, ConvWithAutopadSameLower) { diff --git a/tmva/sofie/test/input_models/ConvWithDilation.onnx b/tmva/sofie/test/input_models/ConvWithDilation.onnx new file mode 100644 index 0000000000000..e32e0b7aedff8 Binary files /dev/null and b/tmva/sofie/test/input_models/ConvWithDilation.onnx differ diff --git a/tmva/sofie/test/input_models/references/ConvWithDilation.ref.hxx b/tmva/sofie/test/input_models/references/ConvWithDilation.ref.hxx new file mode 100644 index 0000000000000..c343b99b7c7eb --- /dev/null +++ b/tmva/sofie/test/input_models/references/ConvWithDilation.ref.hxx @@ -0,0 +1,3 @@ +namespace ConvWithDilation_ExpectedOutput { +float outputs[] = {98.4f, 102.9f, 107.4f, 129.9f, 134.4f, 138.9f, 161.4f, 165.9f, 170.4f}; +} // namespace ConvWithDilation_ExpectedOutput