c++中onnx模型怎么調(diào)用

c++
小億
324
2024-05-31 17:10:18

在C++中調(diào)用ONNX模型的一種常見(jiàn)方法是使用ONNX Runtime庫(kù)。下面是一個(gè)簡(jiǎn)單的示例代碼,演示如何在C++中加載和運(yùn)行ONNX模型:

#include <onnxruntime_cxx_api.h>
#include <iostream>

int main() {
    // 加載ONNX模型
    Ort::Env env(ORT_LOGGING_LEVEL_WARNING, "test");
    Ort::SessionOptions session_options;
    Ort::Session session(env, "model.onnx", session_options);

    // 創(chuàng)建輸入
    std::vector<float> input_data = {1.0, 2.0, 3.0, 4.0};
    Ort::Value input_tensor = Ort::Value::CreateTensor<float>(env, input_data.data(), input_data.size(), {1, 4});

    // 運(yùn)行模型
    const char* input_names[] = {"input"};
    const char* output_names[] = {"output"};
    Ort::RunOptions run_options;
    Ort::Value output_tensor = session.Run(run_options, input_names, &input_tensor, 1, output_names, 1);

    // 獲取輸出
    float* output_data = output_tensor.GetTensorMutableData<float>();
    for (size_t i = 0; i < output_tensor.GetTensorTypeAndShapeInfo().GetElementCount(); i++) {
        std::cout << output_data[i] << " ";
    }

    return 0;
}

在這個(gè)示例中,我們首先加載了一個(gè)名為"model.onnx"的ONNX模型。然后創(chuàng)建了一個(gè)包含四個(gè)元素的輸入張量,并將其傳遞給模型。最后,我們運(yùn)行模型并獲取輸出結(jié)果。請(qǐng)注意,此示例假設(shè)模型具有單個(gè)輸入和單個(gè)輸出,實(shí)際使用時(shí)可能需要根據(jù)模型的具體輸入輸出來(lái)修改代碼。

0