8 #ifndef _SEIMPLEMENTATION_COMMON_ONNXMODEL_H_
9 #define _SEIMPLEMENTATION_COMMON_ONNXMODEL_H_
17 #include <onnxruntime_cxx_api.h>
19 namespace SourceXtractor {
26 template<
typename T,
typename U>
28 Ort::RunOptions run_options;
29 auto mem_info = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU);
41 if (input_data.
size() < input_size || output_data.
size() < output_size) {
46 auto input_tensor = Ort::Value::CreateTensor<T>(
47 mem_info, input_data.
data(), input_data.
size(), input_shape.
data(), input_shape.
size());
48 auto output_tensor = Ort::Value::CreateTensor<U>(
49 mem_info, output_data.
data(), output_data.
size(), output_shape.
data(), output_shape.
size());
55 m_session->Run(run_options, &input_name, &input_tensor, 1, &output_name, &output_tensor, 1);
58 template<
typename T,
typename U>
60 Ort::RunOptions run_options;
61 auto mem_info = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeCPU);
67 for (
int i=0; i<inputs_nb; i++) {
82 input_shape.
data(), input_shape.
size()));
94 if (output_data.
size() < output_size) {
98 auto output_tensor = Ort::Value::CreateTensor<U>(
99 mem_info, output_data.
data(), output_data.
size(), output_shape.
data(), output_shape.
size());
102 m_session->Run(run_options, &input_names[0], &input_tensors[0], inputs_nb, &output_name, &output_tensor, 1);