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;
93 Ort::SessionOptions sessionOptions;
94 sessionOptions.SetIntraOpNumThreads( 1 );
95 sessionOptions.SetGraphOptimizationLevel( ORT_ENABLE_BASIC );
99 sessionOptions.DisableCpuMemArena();
102 Ort::AllocatorWithDefaultOptions allocator;
105 m_env = std::make_unique< Ort::Env >(ORT_LOGGING_LEVEL_WARNING,
"");
117 char* input_name =
m_session->GetInputNameAllocated(i, allocator).release();
121 Ort::TypeInfo type_info =
m_session->GetInputTypeInfo(i);
122 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
123 ONNXTensorElementDataType
type = tensor_info.GetElementType();
141 char* output_name =
m_session->GetOutputNameAllocated(i, allocator).release();
145 Ort::TypeInfo type_info =
m_session->GetOutputTypeInfo(i);
146 auto tensor_info = type_info.GetTensorTypeAndShapeInfo();
147 ONNXTensorElementDataType
type = tensor_info.GetElementType();
161 return StatusCode::SUCCESS;
172 std::vector<float> input_tensor_values(input_tensor_size);
180 int output_tensor_values = output_tensor_values_[testSample];
183 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
184 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());
185 assert(input_tensor.IsTensor());
188 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
191 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
192 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
195 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
196 float ConstScore = -999;
198 for (
int i = 0; i < arrSize; i++){
200 if (ConstScore<floatarr[i]){
201 ConstScore = floatarr[i];
205 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
230 int output_tensor_values = output_tensor_values_[testSample];
233 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
234 std::vector<Ort::Value> input_tensors;
235 for (
long unsigned int i=0; i<constituents.size(); i++) {
238 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.at(i).
size())};
240 input_tensors.push_back(Ort::Value::CreateTensor<float>(
242 constituents.at(i).data(), constituents.at(i).size(), const_dim.data(), const_dim.size()
248 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
251 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
252 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
255 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
256 float ConstScore = -999;
258 for (
int i = 0; i < arrSize; i++){
260 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
261 if (ConstScore<floatarr[i]){
262 ConstScore = floatarr[i];
266 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
291 int output_tensor_values = output_tensor_values_[testSample];
294 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
295 std::vector<Ort::Value> input_tensors;
298 std::vector<float> constituents_values;
299 for (
long unsigned int i=0; i<constituents.size(); i++) {
300 for (
long unsigned int j=0; j<7; j++) {
301 constituents_values.push_back(constituents.at(i).at(j));
305 std::vector<float> interactions_values;
306 for (
long unsigned int i=0; i<interactions.size(); i++) {
307 for (
long unsigned int k=0; k<interactions.size(); k++) {
308 for (
long unsigned int j=0; j<4; j++) {
309 interactions_values.push_back(interactions.at(i).at(k).at(j));
314 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), 7};
315 input_tensors.push_back(Ort::Value::CreateTensor<float>(
317 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
321 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(constituents.size()),
static_cast<int64_t
>(constituents.size()), 4};
322 input_tensors.push_back(Ort::Value::CreateTensor<float>(
324 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
329 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
332 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
333 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
336 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
337 float ConstScore = -999;
339 for (
int i = 0; i < arrSize; i++){
341 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
342 if (ConstScore<floatarr[i]){
343 ConstScore = floatarr[i];
347 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
354 double JSSMLTool::retrieveConstituentsScore(std::vector<std::vector<float>> constituents, std::vector<std::vector<std::vector<float>>> interactions, std::vector<std::vector<float>> mask)
const {
373 int output_tensor_values = output_tensor_values_[testSample];
376 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
377 std::vector<Ort::Value> input_tensors;
380 std::vector<float> constituents_values;
381 for (
long unsigned int j=0; j<7; j++) {
382 for (
long unsigned int i=0; i<constituents.size(); i++) {
383 constituents_values.push_back(constituents.at(i).at(j));
387 std::vector<float> interactions_values;
388 for (
long unsigned int k=0; k<4; k++) {
389 for (
long unsigned int i=0; i<interactions.size(); i++) {
390 for (
long unsigned int j=0; j<interactions.size(); j++) {
391 interactions_values.push_back(interactions.at(i).at(j).at(k));
396 std::vector<float> mask_values;
397 for (
long unsigned int j=0; j<1; j++) {
398 for (
long unsigned int i=0; i<mask.size(); i++) {
399 mask_values.push_back(mask.at(i).at(j));
403 std::vector<int64_t> const_dim = {1, 7,
static_cast<int64_t
>(constituents.size())};
404 input_tensors.push_back(Ort::Value::CreateTensor<float>(
406 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
410 std::vector<int64_t> inter_dim = {1, 4,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size())};
411 input_tensors.push_back(Ort::Value::CreateTensor<float>(
413 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
417 std::vector<int64_t> mask_dim = {1, 1,
static_cast<int64_t
>(mask.size())};
418 input_tensors.push_back(Ort::Value::CreateTensor<float>(
420 mask_values.data(), mask_values.size(), mask_dim.data(), mask_dim.size()
425 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
428 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
429 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
432 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
433 float ConstScore = -999;
435 for (
int i = 0; i < arrSize; i++){
437 ATH_MSG_VERBOSE(
" +++ Score for class "<<i<<
" = "<<floatarr[i]<<std::endl);
438 if (ConstScore<floatarr[i]){
439 ConstScore = floatarr[i];
443 ATH_MSG_DEBUG(
"Class: "<<max_index<<
" has the highest score: "<<floatarr[max_index]);
465 const int nParticleVariables = 9;
466 const int nInteractionVariables = 4;
473 int output_tensor_values = output_tensor_values_[testSample];
476 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
477 std::vector<Ort::Value> input_tensors;
480 std::vector<float> constituents_values;
481 for (
const auto& c : constituents)
482 constituents_values.insert(constituents_values.end(), c.begin(), c.end());
484 std::vector<float> interactions_values;
485 for (
const auto& inter_i : interactions) {
486 for (
const auto& inter_j : inter_i)
487 interactions_values.insert(interactions_values.end(), inter_j.begin(), inter_j.end());
490 std::vector<uint8_t> mask_values;
491 for (
const auto& m : mask)
492 mask_values.push_back(m[0]);
494 std::vector<int64_t> const_dim = {1,
static_cast<int64_t
>(constituents.size()), nParticleVariables};
495 input_tensors.push_back(Ort::Value::CreateTensor<float>(
497 constituents_values.data(), constituents_values.size(), const_dim.data(), const_dim.size()
501 std::vector<int64_t> inter_dim = {1,
static_cast<int64_t
>(interactions.size()),
static_cast<int64_t
>(interactions.size()), nInteractionVariables};
502 input_tensors.push_back(Ort::Value::CreateTensor<float>(
504 interactions_values.data(), interactions_values.size(), inter_dim.data(), inter_dim.size()
508 std::vector<int64_t> mask_dim = {1,
static_cast<int64_t
>(mask.size())};
509 input_tensors.push_back(Ort::Value::CreateTensor<bool>(
511 reinterpret_cast<bool*
>(mask_values.data()),
512 mask_values.size(), mask_dim.data(), mask_dim.size()
517 assert(output_tensors.front().IsTensor());
520 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
521 auto info = output_tensors.front().GetTensorTypeAndShapeInfo();
522 size_t arrSize = info.GetElementCount();
525 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
526 std::vector<float> ConstScores;
527 for (
long unsigned int i = 0; i < arrSize; i++){
529 ConstScores.push_back(floatarr[i]);
543 size_t input_tensor_size =
m_nvars;
544 std::vector<float> input_tensor_values(
m_nvars);
552 int output_tensor_values = output_tensor_values_[testSample];
555 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
558 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());
559 std::vector<float>
empty = {1.};
563 std::vector<Ort::Value> input_tensor;
564 std::vector<int64_t> aaa = {1,
m_nvars};
565 input_tensor.emplace_back(
566 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
568 input_tensor.emplace_back(
571 input_tensor.emplace_back(
574 input_tensor.emplace_back(
579 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
582 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
583 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
586 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
587 float HLScore = -999;
589 for (
int i = 0; i < arrSize; i++){
591 if (HLScore<floatarr[i]){
592 HLScore = floatarr[i];
596 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="")