From b79fa1ca18db05d2cb66dbeaf11d040c55beee7e Mon Sep 17 00:00:00 2001 From: Debo <debottam.bakshi.gupta@cern.ch> Date: Tue, 2 Feb 2021 16:35:48 +0100 Subject: [PATCH 1/3] Adding an abstraction AthOnnxruntimeUtils over AthExOnnxRuntime --- .../ATLAS_CHECK_THREAD_SAFETY | 1 + .../AthOnnxruntimeUtils/FlattenInput.h | 41 +++++++++++++++++ Control/AthOnnxruntimeUtils/CMakeLists.txt | 16 +++++++ .../AthOnnxruntimeUtils/src/FlattenInput.cxx | 24 ++++++++++ .../AthOnnxruntimeUtils_entries.cxx | 9 ++++ .../AthExOnnxRuntime/CMakeLists.txt | 2 +- .../share/AthExOnnxRuntime_jobOptions.py | 1 + .../AthExOnnxRuntime/src/EvaluateModel.cxx | 45 ++++++++++++++++++- .../AthExOnnxRuntime/src/EvaluateModel.h | 3 +- 9 files changed, 139 insertions(+), 3 deletions(-) create mode 100644 Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/ATLAS_CHECK_THREAD_SAFETY create mode 100644 Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h create mode 100644 Control/AthOnnxruntimeUtils/CMakeLists.txt create mode 100644 Control/AthOnnxruntimeUtils/src/FlattenInput.cxx create mode 100644 Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/ATLAS_CHECK_THREAD_SAFETY b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/ATLAS_CHECK_THREAD_SAFETY new file mode 100644 index 000000000000..584871312ff4 --- /dev/null +++ b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/ATLAS_CHECK_THREAD_SAFETY @@ -0,0 +1 @@ +Control/AthOnnxruntimeUtils diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h new file mode 100644 index 000000000000..6ef6219fd61d --- /dev/null +++ b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h @@ -0,0 +1,41 @@ +// Dear emacs, this is -*- c++ -*- +// Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +#ifndef FlattenInput_H +#define FlattenInput_H + +#include <string> +#include <iostream> +#include <fstream> +#include <arpa/inet.h> +#include <vector> +#include <iterator> + + +namespace AthONNX { + +/** class FlattenInput { + + std::vector<float> m_Flatten1D; + + public: + constructor + FlattenInput( std::vector<std::vector<float>> features); + ~FlattenInput(); + std::vector<float> returnFlatten1D(); + }; +}**/ + +#endif // FlattenInput_H + inline std::vector<float> FlattenInput_1D(const std::vector<std::vector<float>> features){ + std::vector<float> m_Flatten1D(28*28); + for(int r=0;r<features.size();++r){ + int n_cols = features[r].size(); + for(int c=0;c<n_cols;++c){ + float a = float(features[r][c]); + m_Flatten1D[r*n_cols+c] = a; + } + } + return m_Flatten1D; + } + + } diff --git a/Control/AthOnnxruntimeUtils/CMakeLists.txt b/Control/AthOnnxruntimeUtils/CMakeLists.txt new file mode 100644 index 000000000000..fc5158b2f385 --- /dev/null +++ b/Control/AthOnnxruntimeUtils/CMakeLists.txt @@ -0,0 +1,16 @@ +# Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration + +# Declare the package's name. +atlas_subdir( AthOnnxruntimeUtils ) + +# Component(s) in the package. +atlas_add_library( AthOnnxruntimeUtilsLib + #src/*.cxx + INTERFACE + PUBLIC_HEADERS AthOnnxruntimeUtils + LINK_LIBRARIES AthenaKernel GaudiKernel ) + +#atlas_add_component( AthOnnxruntimeUtils + #src/components/*.cxx + # LINK_LIBRARIES AthOnnxruntimeUtilsLib ) + diff --git a/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx b/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx new file mode 100644 index 000000000000..38da0dac03c8 --- /dev/null +++ b/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx @@ -0,0 +1,24 @@ +/* + Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration +*/ + +#include "AthOnnxruntimeUtils/FlattenInput.h" + +namespace AthONNX { + + FlattenInput::FlattenInput(const std::vector<std::vector<float>> features){ + + for(int r=0;r<features.size();++r){ + int n_cols = features[r].size(); + for(int c=0;c<n_cols;++c){ + unsigned char temp=0; + m_Flatten1D[r*n_cols+c]=features[r][c]; + } + } + } + + FlattenInput::~FlattenInput(){} + + std::vector<float> FlattenInput::returnFlatten1D(){return m_Flatten1D;} +} + diff --git a/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx b/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx new file mode 100644 index 000000000000..f1b6c6193f16 --- /dev/null +++ b/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx @@ -0,0 +1,9 @@ +// Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +// Local include(s). +#include "AthOnnxruntimeUtils/FlattenInput.h" + +// Declare the package's components. +DECLARE_COMPONENT(AthONNX::FlattenInput ) + + diff --git a/Control/AthenaExamples/AthExOnnxRuntime/CMakeLists.txt b/Control/AthenaExamples/AthExOnnxRuntime/CMakeLists.txt index 2cf4c6266bf7..5aa822732907 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/CMakeLists.txt +++ b/Control/AthenaExamples/AthExOnnxRuntime/CMakeLists.txt @@ -13,7 +13,7 @@ atlas_add_library( AthExOnnxRuntimeLib atlas_add_component( AthExOnnxRuntime src/*.h src/*.cxx src/components/*.cxx INCLUDE_DIRS ${ONNXRUNTIME_INCLUDE_DIRS} - LINK_LIBRARIES ${ONNXRUNTIME_LIBRARIES} AthExOnnxRuntimeLib AthenaBaseComps GaudiKernel PathResolver AthOnnxruntimeServiceLib) + LINK_LIBRARIES ${ONNXRUNTIME_LIBRARIES} AthExOnnxRuntimeLib AthenaBaseComps GaudiKernel PathResolver AthOnnxruntimeServiceLib AthOnnxruntimeUtilsLib) # Install files from the package. atlas_install_joboptions( share/*.py ) diff --git a/Control/AthenaExamples/AthExOnnxRuntime/share/AthExOnnxRuntime_jobOptions.py b/Control/AthenaExamples/AthExOnnxRuntime/share/AthExOnnxRuntime_jobOptions.py index ac1beaef5aeb..65db94b13e03 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/share/AthExOnnxRuntime_jobOptions.py +++ b/Control/AthenaExamples/AthExOnnxRuntime/share/AthExOnnxRuntime_jobOptions.py @@ -20,6 +20,7 @@ AthONNX.TestSample = randint(0, 9999) AthONNX.DoBatches = False AthONNX.NumberOfBatches = 1 AthONNX.SizeOfBatch = 1 +AthONNX.OutputLevel = DEBUG # Run for 10 "events". theApp.EvtMax = 2 diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx index 90bcb63839f9..994e6e215f73 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx @@ -5,9 +5,44 @@ // Framework include(s). #include "PathResolver/PathResolver.h" +#include "AthOnnxruntimeUtils/FlattenInput.h" +//class AthONNX::FlattenInput; namespace AthONNX { + //******************************************************************* + // for reading MNIST images + std::vector<std::vector<std::vector<float>>> read_mnist_pixel_notFlat(const std::string &full_path) //function to load test images + { + std::vector<std::vector<std::vector<float>>> input_tensor_values; + input_tensor_values.resize(10000, std::vector<std::vector<float> >(28,std::vector<float>(28))); + std::ifstream file (full_path.c_str(), std::ios::binary); + int magic_number=0; + int number_of_images=0; + int n_rows=0; + int n_cols=0; + file.read((char*)&magic_number,sizeof(magic_number)); + magic_number= ntohl(magic_number); + file.read((char*)&number_of_images,sizeof(number_of_images)); + number_of_images= ntohl(number_of_images); + file.read((char*)&n_rows,sizeof(n_rows)); + n_rows= ntohl(n_rows); + file.read((char*)&n_cols,sizeof(n_cols)); + n_cols= ntohl(n_cols); + for(int i=0;i<number_of_images;++i) + { + for(int r=0;r<n_rows;++r) + { + for(int c=0;c<n_cols;++c) + { + unsigned char temp=0; + file.read((char*)&temp,sizeof(temp)); + input_tensor_values[i][r][c]= float(temp)/255; + } + } + } + return input_tensor_values; + } //******************************************************************* // for reading MNIST images std::vector<std::vector<float>> read_mnist_pixel(const std::string &full_path) //function to load test images @@ -96,8 +131,14 @@ namespace AthONNX { sessionOptions ); ATH_MSG_INFO( "Created the ONNX Runtime session" ); m_input_tensor_values = read_mnist_pixel(pixelFileName); + m_input_tensor_values_notFlat = read_mnist_pixel_notFlat(pixelFileName); m_output_tensor_values = read_mnist_label(labelFileName); - + ATH_MSG_DEBUG("Debo1..........................."); + std::vector<std::vector<float>> c = m_input_tensor_values_notFlat[0]; + ATH_MSG_DEBUG("Debo2..........................."); + // AthONNX::FlattenInput flatten(c); + ATH_MSG_DEBUG("Debo3..........................."); + m_flatten1D = AthONNX::FlattenInput_1D(c); // Return gracefully. return StatusCode::SUCCESS; } @@ -170,6 +211,8 @@ namespace AthONNX { // For a check that the sample dimension is fully flatten (1x28x28 = 784) ATH_MSG_DEBUG("Size of Input tensor: "<<input_tensor_values.size()); + ATH_MSG_DEBUG("Size of notFlat Input tensor: "<<m_input_tensor_values_notFlat[0][0].size()); + ATH_MSG_DEBUG("Size of Flatten Input tensor: "<<m_flatten1D.size()); /************** Create input tensor object from input data values to feed into your model *********************/ Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h index 59e0fc5933e6..d284f3cf9045 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h @@ -5,7 +5,6 @@ // Local include(s). #include "AthOnnxruntimeService/IONNXRuntimeSvc.h" - // Framework include(s). #include "AthenaBaseComps/AthReentrantAlgorithm.h" #include "GaudiKernel/ServiceHandle.h" @@ -80,7 +79,9 @@ namespace AthONNX { /// The "session" of ONNX Runtime that we'll be using std::unique_ptr< Ort::Session > m_session; std::vector<std::vector<float>> m_input_tensor_values; + std::vector<std::vector<std::vector<float>>> m_input_tensor_values_notFlat; std::vector<int> m_output_tensor_values; + std::vector<float> m_flatten1D; }; // class EvaluateModel -- GitLab From 4759da6ea804fb09065d097ed3f2182bd5e491d8 Mon Sep 17 00:00:00 2001 From: Debo <debottam.bakshi.gupta@cern.ch> Date: Tue, 16 Feb 2021 15:11:47 +0100 Subject: [PATCH 2/3] removing unnecessary .cxx files --- .../AthOnnxruntimeUtils/FlattenInput.h | 14 +---------- Control/AthOnnxruntimeUtils/CMakeLists.txt | 5 ---- .../AthOnnxruntimeUtils/src/FlattenInput.cxx | 24 ------------------- .../AthOnnxruntimeUtils_entries.cxx | 9 ------- 4 files changed, 1 insertion(+), 51 deletions(-) delete mode 100644 Control/AthOnnxruntimeUtils/src/FlattenInput.cxx delete mode 100644 Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h index 6ef6219fd61d..c84204d23cad 100644 --- a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h +++ b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h @@ -13,19 +13,6 @@ namespace AthONNX { -/** class FlattenInput { - - std::vector<float> m_Flatten1D; - - public: - constructor - FlattenInput( std::vector<std::vector<float>> features); - ~FlattenInput(); - std::vector<float> returnFlatten1D(); - }; -}**/ - -#endif // FlattenInput_H inline std::vector<float> FlattenInput_1D(const std::vector<std::vector<float>> features){ std::vector<float> m_Flatten1D(28*28); for(int r=0;r<features.size();++r){ @@ -39,3 +26,4 @@ namespace AthONNX { } } +#endif diff --git a/Control/AthOnnxruntimeUtils/CMakeLists.txt b/Control/AthOnnxruntimeUtils/CMakeLists.txt index fc5158b2f385..4889ec32ea92 100644 --- a/Control/AthOnnxruntimeUtils/CMakeLists.txt +++ b/Control/AthOnnxruntimeUtils/CMakeLists.txt @@ -5,12 +5,7 @@ atlas_subdir( AthOnnxruntimeUtils ) # Component(s) in the package. atlas_add_library( AthOnnxruntimeUtilsLib - #src/*.cxx INTERFACE PUBLIC_HEADERS AthOnnxruntimeUtils LINK_LIBRARIES AthenaKernel GaudiKernel ) -#atlas_add_component( AthOnnxruntimeUtils - #src/components/*.cxx - # LINK_LIBRARIES AthOnnxruntimeUtilsLib ) - diff --git a/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx b/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx deleted file mode 100644 index 38da0dac03c8..000000000000 --- a/Control/AthOnnxruntimeUtils/src/FlattenInput.cxx +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration -*/ - -#include "AthOnnxruntimeUtils/FlattenInput.h" - -namespace AthONNX { - - FlattenInput::FlattenInput(const std::vector<std::vector<float>> features){ - - for(int r=0;r<features.size();++r){ - int n_cols = features[r].size(); - for(int c=0;c<n_cols;++c){ - unsigned char temp=0; - m_Flatten1D[r*n_cols+c]=features[r][c]; - } - } - } - - FlattenInput::~FlattenInput(){} - - std::vector<float> FlattenInput::returnFlatten1D(){return m_Flatten1D;} -} - diff --git a/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx b/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx deleted file mode 100644 index f1b6c6193f16..000000000000 --- a/Control/AthOnnxruntimeUtils/src/components/AthOnnxruntimeUtils_entries.cxx +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration - -// Local include(s). -#include "AthOnnxruntimeUtils/FlattenInput.h" - -// Declare the package's components. -DECLARE_COMPONENT(AthONNX::FlattenInput ) - - -- GitLab From 4a6fdb6b5599b4975604ffc12d1133760f160784 Mon Sep 17 00:00:00 2001 From: Debo <debottam.bakshi.gupta@cern.ch> Date: Fri, 26 Feb 2021 17:50:49 +0100 Subject: [PATCH 3/3] Some logical and C++ DEBUG --- .../AthOnnxruntimeUtils/FlattenInput.h | 14 ++-- .../AthExOnnxRuntime/src/EvaluateModel.cxx | 69 ++++--------------- .../AthExOnnxRuntime/src/EvaluateModel.h | 2 - 3 files changed, 22 insertions(+), 63 deletions(-) diff --git a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h index c84204d23cad..0a4abfaf7970 100644 --- a/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h +++ b/Control/AthOnnxruntimeUtils/AthOnnxruntimeUtils/FlattenInput.h @@ -12,18 +12,18 @@ namespace AthONNX { - - inline std::vector<float> FlattenInput_1D(const std::vector<std::vector<float>> features){ - std::vector<float> m_Flatten1D(28*28); - for(int r=0;r<features.size();++r){ + template<typename T> + inline std::vector<T> FlattenInput2D_1D( std::vector<std::vector<T>> features, int size){ + std::vector<float> Flatten1D(size); + for(std::size_t r=0;r<features.size();++r){ int n_cols = features[r].size(); for(int c=0;c<n_cols;++c){ float a = float(features[r][c]); - m_Flatten1D[r*n_cols+c] = a; + Flatten1D[r*n_cols+c] = a; } } - return m_Flatten1D; + return Flatten1D; } - } +} #endif diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx index 994e6e215f73..98edd86c7d19 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.cxx @@ -43,39 +43,6 @@ namespace AthONNX { } return input_tensor_values; } - //******************************************************************* - // for reading MNIST images - std::vector<std::vector<float>> read_mnist_pixel(const std::string &full_path) //function to load test images - { - std::vector<std::vector<float>> input_tensor_values; - input_tensor_values.resize(10000, std::vector<float>(28*28*1)); - std::ifstream file (full_path.c_str(), std::ios::binary); - int magic_number=0; - int number_of_images=0; - int n_rows=0; - int n_cols=0; - file.read((char*)&magic_number,sizeof(magic_number)); - magic_number= ntohl(magic_number); - file.read((char*)&number_of_images,sizeof(number_of_images)); - number_of_images= ntohl(number_of_images); - file.read((char*)&n_rows,sizeof(n_rows)); - n_rows= ntohl(n_rows); - file.read((char*)&n_cols,sizeof(n_cols)); - n_cols= ntohl(n_cols); - for(int i=0;i<number_of_images;++i) - { - for(int r=0;r<n_rows;++r) - { - for(int c=0;c<n_cols;++c) - { - unsigned char temp=0; - file.read((char*)&temp,sizeof(temp)); - input_tensor_values[i][r*n_cols+c]= float(temp)/255; - } - } - } - return input_tensor_values; - } //******************************************************************************** // for reading MNIST labels @@ -130,15 +97,9 @@ namespace AthONNX { modelFileName.c_str(), sessionOptions ); ATH_MSG_INFO( "Created the ONNX Runtime session" ); - m_input_tensor_values = read_mnist_pixel(pixelFileName); m_input_tensor_values_notFlat = read_mnist_pixel_notFlat(pixelFileName); - m_output_tensor_values = read_mnist_label(labelFileName); - ATH_MSG_DEBUG("Debo1..........................."); std::vector<std::vector<float>> c = m_input_tensor_values_notFlat[0]; - ATH_MSG_DEBUG("Debo2..........................."); - // AthONNX::FlattenInput flatten(c); - ATH_MSG_DEBUG("Debo3..........................."); - m_flatten1D = AthONNX::FlattenInput_1D(c); + m_output_tensor_values = read_mnist_label(labelFileName); // Return gracefully. return StatusCode::SUCCESS; } @@ -205,19 +166,18 @@ namespace AthONNX { output_node_dims[0] = 1; /***************** Choose an example sample randomly ****************************/ - std::vector<float> input_tensor_values = m_input_tensor_values[m_testSample]; + std::vector<std::vector<float>> input_tensor_values = m_input_tensor_values_notFlat[m_testSample]; + std::vector<float> flatten = AthONNX::FlattenInput2D_1D(input_tensor_values, 784); // Output label of corresponding m_input_tensor_values[m_testSample]; e.g 0, 1, 2, 3 etc int output_tensor_values = m_output_tensor_values[m_testSample]; // For a check that the sample dimension is fully flatten (1x28x28 = 784) - ATH_MSG_DEBUG("Size of Input tensor: "<<input_tensor_values.size()); - ATH_MSG_DEBUG("Size of notFlat Input tensor: "<<m_input_tensor_values_notFlat[0][0].size()); - ATH_MSG_DEBUG("Size of Flatten Input tensor: "<<m_flatten1D.size()); + ATH_MSG_DEBUG("Size of Flatten Input tensor: "<<flatten.size()); /************** Create input tensor object from input data values to feed into your model *********************/ Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, - input_tensor_values.data(), - input_tensor_values.size(), /*** 1x28x28 = 784 ***/ + flatten.data(), + flatten.size(), /*** 1x28x28 = 784 ***/ input_node_dims.data(), input_node_dims.size()); /*** [1, 28, 28] = 3 ***/ @@ -269,14 +229,15 @@ namespace AthONNX { output_node_dims[0] = m_sizeOfBatch; /************************** process multiple batches ********************************/ + int l =0; /****** variable for distributing rows in m_input_tensor_values_notFlat equally into batches*****/ for (int i = 0; i < m_numberOfBatches; i++) { ATH_MSG_DEBUG("Processing batch #" << i); std::vector<float> batch_input_tensor_values; - - for (int j = 0; j < m_sizeOfBatch; j++) { - + for (int j = l; j < l+m_sizeOfBatch; j++) { + + std::vector<float> flattened_input = AthONNX::FlattenInput2D_1D(m_input_tensor_values_notFlat[j],784); /******************For each batch we need a flattened (5 x 28 x 28 = 3920) 1D array******************************/ - batch_input_tensor_values.insert(batch_input_tensor_values.end(),m_input_tensor_values[j].begin(),m_input_tensor_values[j].end()); + batch_input_tensor_values.insert(batch_input_tensor_values.end(), flattened_input.begin(), flattened_input.end()); } Ort::Value batch_input_tensors = Ort::Value::CreateTensor<float>(memory_info, @@ -306,9 +267,9 @@ namespace AthONNX { float* floatarr = batch_output_tensors.front().GetTensorMutableData<float>(); // show true label for the test input - for(int i = 0; i<m_sizeOfBatch; i++){ + for(int i = l; i<l+m_sizeOfBatch; i++){ ATH_MSG_INFO("Label for the input test data = "<<m_output_tensor_values[i]); - int k = i*10; + int k = (i-l)*10; float max = -999; int max_index = 0; for (int j =k ; j < k+10; j++){ @@ -319,8 +280,8 @@ namespace AthONNX { } } ATH_MSG_INFO("Class: "<<max_index-k<<" has the highest score: "<<floatarr[max_index]); - } - + } + l = l+m_sizeOfBatch; } } // else/m_doBatches == True codition ends // Return gracefully. diff --git a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h index d284f3cf9045..e4a3c0424cee 100644 --- a/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h +++ b/Control/AthenaExamples/AthExOnnxRuntime/src/EvaluateModel.h @@ -78,10 +78,8 @@ namespace AthONNX { /// The "session" of ONNX Runtime that we'll be using std::unique_ptr< Ort::Session > m_session; - std::vector<std::vector<float>> m_input_tensor_values; std::vector<std::vector<std::vector<float>>> m_input_tensor_values_notFlat; std::vector<int> m_output_tensor_values; - std::vector<float> m_flatten1D; }; // class EvaluateModel -- GitLab