24 std::vector<float> input_tensor_values(n_rows*n_cols*n_colors);
26 for(
int iRow=0; iRow<n_rows; ++iRow){
27 for(
int iColumn=0; iColumn<n_cols; ++iColumn){
28 for(
int iColor=0; iColor<n_colors; ++iColor){
29 input_tensor_values[ (n_colors*n_cols*iRow) + iColumn*n_colors + iColor] = Images[iColor].GetBinContent(iRow+1, iColumn+1);
34 return input_tensor_values;
90 Ort::SessionOptions sessionOptions;
91 sessionOptions.SetIntraOpNumThreads( 1 );
92 sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC );
96 sessionOptions.DisableCpuMemArena();
99 Ort::AllocatorWithDefaultOptions allocator;
102 m_env = std::make_unique< Ort::Env >(ORT_LOGGING_LEVEL_WARNING,
"");
114 char* input_name =
m_session->GetInputNameAllocated(i, allocator).release();
118 Ort::TypeInfo type_info =
m_session->GetInputTypeInfo(i);
119 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
120 ONNXTensorElementDataType
type = tensor_info.GetElementType();
138 char* output_name =
m_session->GetOutputNameAllocated(i, allocator).release();
142 Ort::TypeInfo type_info =
m_session->GetOutputTypeInfo(i);
143 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
144 ONNXTensorElementDataType
type = tensor_info.GetElementType();
158 return StatusCode::SUCCESS;
169 std::vector<float> input_tensor_values(input_tensor_size);
177 int output_tensor_values = output_tensor_values_[testSample];
180 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
181 Ort::Value input_tensor = Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size,
m_input_node_dims.data(),
m_input_node_dims.size());
182 assert(input_tensor.IsTensor());
185 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
188 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
189 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
192 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
193 float ConstScore = -999;
195 for (
int i = 0; i < arrSize; i++){
197 if (ConstScore<floatarr[i]){
198 ConstScore = floatarr[i];
202 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
227 int output_tensor_values = output_tensor_values_[testSample];
230 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
231 std::vector<Ort::Value> input_tensors;
232 for (
long unsigned int i=0; i<constituents.size(); i++) {
235 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.at(i).
size())};
237 input_tensors.push_back(Ort::Value::CreateTensor<float>(
239 constituents.at(i).data(), constituents.at(i).size(), const_dim.data(), const_dim.size()
245 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
248 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
249 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
252 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
253 float ConstScore = -999;
255 for (
int i = 0; i < arrSize; i++){
257 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
258 if (ConstScore<floatarr[i]){
259 ConstScore = floatarr[i];
263 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
288 int output_tensor_values = output_tensor_values_[testSample];
291 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
292 std::vector<Ort::Value> input_tensors;
295 std::vector<float> constituents_values;
296 for (
long unsigned int i=0; i<constituents.size(); i++) {
297 for (
long unsigned int j=0; j<7; j++) {
298 constituents_values.push_back(constituents.at(i).at(j));
302 std::vector<float> interactions_values;
303 for (
long unsigned int i=0; i<interactions.size(); i++) {
304 for (
long unsigned int k=0; k<interactions.size(); k++) {
305 for (
long unsigned int j=0; j<4; j++) {
306 interactions_values.push_back(interactions.at(i).at(k).at(j));
311 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), 7};
312 input_tensors.push_back(Ort::Value::CreateTensor<float>(
314 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
318 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(constituents.size()),
static_cast<int64_t
>(constituents.size()), 4};
319 input_tensors.push_back(Ort::Value::CreateTensor<float>(
321 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
326 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
329 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
330 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
333 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
334 float ConstScore = -999;
336 for (
int i = 0; i < arrSize; i++){
338 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
339 if (ConstScore<floatarr[i]){
340 ConstScore = floatarr[i];
344 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
351 double JSSMLTool::retrieveConstituentsScore(std::vector<std::vector<float>> constituents, std::vector<std::vector<std::vector<float>>> interactions, std::vector<std::vector<float>> mask)
const {
370 int output_tensor_values = output_tensor_values_[testSample];
373 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
374 std::vector<Ort::Value> input_tensors;
377 std::vector<float> constituents_values;
378 for (
long unsigned int j=0; j<7; j++) {
379 for (
long unsigned int i=0; i<constituents.size(); i++) {
380 constituents_values.push_back(constituents.at(i).at(j));
384 std::vector<float> interactions_values;
385 for (
long unsigned int k=0; k<4; k++) {
386 for (
long unsigned int i=0; i<interactions.size(); i++) {
387 for (
long unsigned int j=0; j<interactions.size(); j++) {
388 interactions_values.push_back(interactions.at(i).at(j).at(k));
393 std::vector<float> mask_values;
394 for (
long unsigned int j=0; j<1; j++) {
395 for (
long unsigned int i=0; i<mask.size(); i++) {
396 mask_values.push_back(mask.at(i).at(j));
400 std::vector<int64_t> const_dim = {1, 7,
static_cast<int64_t
>(constituents.size())};
401 input_tensors.push_back(Ort::Value::CreateTensor<float>(
403 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
407 std::vector<int64_t> inter_dim = {1, 4,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size())};
408 input_tensors.push_back(Ort::Value::CreateTensor<float>(
410 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
414 std::vector<int64_t> mask_dim = {1, 1,
static_cast<int64_t
>(mask.size())};
415 input_tensors.push_back(Ort::Value::CreateTensor<float>(
417 mask_values.data(), mask_values.size(), mask_dim.data(), mask_dim.size()
422 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
425 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
426 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
429 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
430 float ConstScore = -999;
432 for (
int i = 0; i < arrSize; i++){
434 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
435 if (ConstScore<floatarr[i]){
436 ConstScore = floatarr[i];
440 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
462 const int nParticleVariables = 9;
463 const int nInteractionVariables = 4;
470 int output_tensor_values = output_tensor_values_[testSample];
473 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
474 std::vector<Ort::Value> input_tensors;
477 std::vector<float> constituents_values;
478 for (
const auto& c : constituents)
479 constituents_values.insert(constituents_values.end(), c.begin(), c.end());
481 std::vector<float> interactions_values;
482 for (
const auto& inter_i : interactions) {
483 for (
const auto& inter_j : inter_i)
484 interactions_values.insert(interactions_values.end(), inter_j.begin(), inter_j.end());
487 std::vector<uint8_t> mask_values;
488 for (
const auto& m : mask)
489 mask_values.push_back(m[0]);
491 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), nParticleVariables};
492 input_tensors.push_back(Ort::Value::CreateTensor<float>(
494 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
498 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size()), nInteractionVariables};
499 input_tensors.push_back(Ort::Value::CreateTensor<float>(
501 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
505 std::vector<int64_t> mask_dim = {1,
static_cast<int64_t
>(mask.size())};
506 input_tensors.push_back(Ort::Value::CreateTensor<bool>(
508 reinterpret_cast<bool*
>(mask_values.data()),
509 mask_values.size(), mask_dim.data(), mask_dim.size()
514 assert(output_tensors.front().IsTensor());
517 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
518 auto info = output_tensors.front().GetTensorTypeAndShapeInfo();
519 size_t arrSize = info.GetElementCount();
522 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
523 std::vector<float> ConstScores;
524 for (
long unsigned int i = 0; i < arrSize; i++){
526 ConstScores.push_back(floatarr[i]);
540 size_t input_tensor_size =
m_nvars;
541 std::vector<float> input_tensor_values(
m_nvars);
549 int output_tensor_values = output_tensor_values_[testSample];
552 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
555 Ort::Value input1 = Ort::Value::CreateTensor<float>(memory_info,
const_cast<float*
>(input_tensor_values.data()), input_tensor_size,
m_input_node_dims.data(),
m_input_node_dims.size());
556 std::vector<float>
empty = {1.};
560 std::vector<Ort::Value> input_tensor;
561 std::vector<int64_t> aaa = {1,
m_nvars};
562 input_tensor.emplace_back(
563 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
565 input_tensor.emplace_back(
568 input_tensor.emplace_back(
571 input_tensor.emplace_back(
576 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
579 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
580 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
583 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
584 float HLScore = -999;
586 for (
int i = 0; i < arrSize; i++){
588 if (HLScore<floatarr[i]){
589 HLScore = floatarr[i];
593 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")