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) {