ONNX_RUN()

ONNX_RUN(model, input, input_shape, output_shape) 直接通过 SQL 运行 ONNX 模型,模型以 datalink 或 varbinary 传入,输入与形状描述符以 JSON 字符串传入。

描述

ONNX_RUN() 运行一个 ONNX 模型并返回其输出。模型既可以作为指向 .onnx 文件的 DATALINK 传入,也可以作为通过 LOAD_FILE() 加载的原始 VARBINARY 字节传入。

input 参数是构成输入张量的数值 JSON 数组。input_shapeoutput_shape 参数是描述张量维度和数据类型的 JSON 对象,例如 '{"dim":[1,1,4],"dtype":"float32"}'

支持 float32float16int32int8 等输入与输出数据类型。不支持的数据类型、与声明形状不匹配的输入长度,或整数数据类型的越界值都会报错。如果模型或输入为 NULL,结果为 NULL

语法

ONNX_RUN(model, input, input_shape, output_shape)

参数

参数

说明

model

指向 .onnx 文件的 DATALINK,或 LOAD_FILE() 返回的 VARBINARY 值。

input

包含输入张量值的 JSON 数组字符串。

input_shape

描述输入维度与数据类型的 JSON 对象,如 '{"dim":[1,1,4],"dtype":"float32"}'

output_shape

描述输出维度与数据类型的 JSON 对象,或 NULL 以返回模型自身的输出结构。

返回值

以 JSON 编码值的形式返回模型输出。

示例

以下示例传入 NULL 作为模型,因此 ONNX_RUN() 返回 NULL。若要运行真实模型,请传入指向 .onnx 文件的 DATALINK,或传入由 LOAD_FILE() 加载得到的 VARBINARY

DROP DATABASE IF EXISTS onnx_run_demo;
CREATE DATABASE onnx_run_demo;
USE onnx_run_demo;

SELECT ONNX_RUN(
    CAST(NULL AS DATALINK),
    '[0.2,0.3,0.6,0.9]',
    '{"dim":[1,1,4],"dtype":"float32"}',
    '{"dim":[1,1,2],"dtype":"float32"}') AS null_model;

DROP DATABASE onnx_run_demo;