#include
Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test");
Ort::SessionOptions session_options;
session_options.SetIntraOpNumThreads(1);
session_options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL);
// Windows下使用wchar_t,Linux用const char
Ort::Session session(env, L"model.onnx", session_options);
const int input_shape[] = {1, 3, 224, 224};
auto memory_info = Ort::MemoryInfo::CreateCpu(OrtDeviceAllocator, OrtMemTypeDefault);
std::vector input_tensor_values(1 * 3 * 224 * 224); // 填充你的数据
Ort::Value input_tensor = Ort::Value::CreateTensor(
memory_info, input_tensor_values.data(),
input_tensor_values.size() sizeof(float),
const_cast>(input_shape), 4, ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT
);
const char* input_names[] = {"input"}; // 替换为模型实际输入名
const char* output_names[] = {"output"}; // 替换为实际输出名
Ort::RunOptions run_options;
auto output_tensors = session.Run(run_options,
input_names, &input_tensor, 1,
output_names, 1
);
// 获取输出数据
Ort::Value& output_tensor = output_tensors[0];
float* float_output = output_tensor.GetTensorMutableData();
int64_t num_outputs = output_tensor.GetTensorElementCount();
for (int i = 0; i < std::min(10LL, num_outputs); ++i) {
printf("Output[%d] = %f\n", i, float_output[i]);
}
