12 {
13
14
15 METNetHandler::METNetHandler(const std::string& modelName) :
16 m_modelName(modelName),
17 m_numInputs(1),
18 m_numOutputs(1),
19 m_inputDims({1,77}),
20 m_outputDims({1,2}),
21 m_graphInputNames({"inputs"}),
22 m_graphOutputNames({"outputs"}){}
23
24 int METNetHandler::initialize() {
25
26
28 if (m_modelPath == "") return 1;
29
30
31 m_onnxSessionOptions.SetIntraOpNumThreads(1);
32 m_onnxSessionOptions.SetGraphOptimizationLevel(ORT_ENABLE_BASIC);
33
34
35 m_onnxSession = std::make_unique<Ort::Session>(m_onnxEnv, m_modelPath.c_str(), m_onnxSessionOptions);
36
37 return 0;
38 }
39
40 unsigned int METNetHandler::getReqSize() const{
41
42 return static_cast<unsigned int>(m_inputDims[1]);
43 }
44
45 void METNetHandler::predict(std::vector<float>& outputs, std::vector<float>& inputs) const {
46
47
48
49
50 auto memory_info = Ort::MemoryInfo::CreateCpu(OrtArenaAllocator, OrtMemTypeDefault);
51 Ort::Value input_tensor = Ort::Value::CreateTensor<float>( memory_info,
54 m_inputDims.data(),
55 m_inputDims.size() );
56
58 Ort::Value output_tensor = Ort::Value::CreateTensor<float>( memory_info,
61 m_outputDims.data(),
62 m_outputDims.size() );
63
64
65 std::lock_guard<std::mutex>
lock(m_onnxMutex);
66 m_onnxSession->Run( Ort::RunOptions{nullptr},
67 m_graphInputNames.data(), &input_tensor, m_numInputs,
68 m_graphOutputNames.data(), &output_tensor, m_numOutputs );
69 }
70
71}
virtual void lock()=0
Interface to allow an object to lock itself when made const in SG.
std::string PathResolverFindCalibFile(const std::string &logical_file_name)