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;
42 std::vector<float> input_tensor_values(
m_nvars);
45 for(
const auto & var : JSSVars){
48 JSSVars[var.first] = (var.second -
mean) /
std;
54 input_tensor_values[v] = JSSVars[name];
57 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]);
453 size_t input_tensor_size =
m_nvars;
454 std::vector<float> input_tensor_values(
m_nvars);
462 int output_tensor_values = output_tensor_values_[testSample];
465 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
468 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());
469 std::vector<float>
empty = {1.};
473 std::vector<Ort::Value> input_tensor;
474 std::vector<int64_t> aaa = {1,
m_nvars};
475 input_tensor.emplace_back(
476 Ort::Value::CreateTensor<float>(memory_info, input_tensor_values.data(), input_tensor_size, aaa.data(), aaa.size())
478 input_tensor.emplace_back(
481 input_tensor.emplace_back(
484 input_tensor.emplace_back(
489 assert(output_tensors.size() == 1 && output_tensors.front().IsTensor());
492 float* floatarr = output_tensors.front().GetTensorMutableData<
float>();
493 int arrSize =
sizeof(*floatarr)/
sizeof(floatarr[0]);
496 ATH_MSG_DEBUG(
"Label for the input test data = "<<output_tensor_values);
497 float HLScore = -999;
499 for (
int i = 0; i < arrSize; i++){
501 if (HLScore<floatarr[i]){
502 HLScore = floatarr[i];
506 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="")