onnxruntime 动态输入推理
时间: 2023-08-09 13:05:30 浏览: 248
onnxruntime 支持动态输入推理,即输入张量的形状(shape)可以在推理时根据实际输入数据动态调整。这在一些应用中非常有用,比如图像分割,输入图片大小不一时,可以根据实际输入图片大小动态调整输入张量的形状。
使用 onnxruntime 进行动态输入推理需要先创建一个 SessionOptions 对象,设置 enable_dynamic_shape 属性为 true,然后在创建 Session 时将此对象传入。
示例代码如下:
```python
import numpy as np
import onnxruntime as ort
# 创建 SessionOptions 对象
options = ort.SessionOptions()
options.enable_dynamic_shape = True
# 创建 Session
session = ort.InferenceSession("model.onnx", options)
# 输入数据
input_data = np.random.rand(1, 3, 224, 224).astype(np.float32)
# 动态调整输入张量形状
input_name = session.get_inputs()[0].name
input_shape = [1, 3, 112, 112] # 新的形状
session.set_shape(input_name, input_shape)
# 推理
output = session.run(None, {input_name: input_data})
```
在上面的示例代码中,先创建了一个 SessionOptions 对象,并将 enable_dynamic_shape 设置为 true。然后创建 Session 时将此对象传入。在推理之前,先创建一个输入张量,然后通过 session.get_inputs() 获取输入张量的名称,再调用 session.set_shape() 方法动态调整输入张量的形状。最后调用 session.run() 方法进行推理。
阅读全文