11 std::vector<std::vector<int64_t> >& dataShape,
12 std::vector<std::string>& nodeNames,
18 size_t numNodes = isInput? session.GetInputCount(): session.GetOutputCount();
19 dataShape.reserve(numNodes);
20 nodeNames.reserve(numNodes);
22 Ort::AllocatorWithDefaultOptions allocator;
23 for( std::size_t
i = 0;
i < numNodes;
i++ ) {
24 Ort::TypeInfo typeInfo = isInput? session.GetInputTypeInfo(
i): session.GetOutputTypeInfo(
i);
25 auto tensorInfo = typeInfo.GetTensorTypeAndShapeInfo();
26 dataShape.emplace_back(tensorInfo.GetShape());
28 auto nodeName = isInput? session.GetInputNameAllocated(
i, allocator) : session.GetOutputNameAllocated(
i, allocator);
29 nodeNames.emplace_back(nodeName.get());
35 std::vector<std::vector<int64_t> >& dataShape,
36 std::vector<std::string>& nodeNames
43 std::vector<std::vector<int64_t> >& dataShape,
44 std::vector<std::string>& nodeNames
50 const std::vector<std::string>& inputNames,
51 const std::vector<Ort::Value>& inputData,
53 const std::vector<Ort::Value>& outputData){
55 if (inputNames.empty()) {
56 throw std::runtime_error(
"Onnxruntime input data maping cannot be empty");
58 assert(inputNames.size() == inputData.size());
60 Ort::IoBinding iobinding(session);
61 for(
size_t idx = 0;
idx < inputNames.size(); ++
idx){
62 iobinding.BindInput(inputNames[
idx].
data(), inputData[
idx]);
70 session.Run(Ort::RunOptions{
nullptr}, iobinding);
75 for (
const auto&
dim : dataShape) {