模型输入和输出、形状和布局¶
用户通过在推理前将数据传递到模型的 输入 ,并在推理后从模型的 输出 中检索数据,与模型进行交互。模型可以有一个或多个输入和输出。通常,在 OpenVINO™ 工具套件中, 转换的模型中所有输入和输出的识别方式都与原始框架模型相同。
OpenVINO 使用 张量名称 进行识别。张量名称有多种不同的构成方式,具体取决于框架。
模型会接受输入并生成某种 形状 的输出。形状定义张量中维度的数量及其顺序。例如,图像分类模型可以接受形状为 [1, 3, 240, 240] 的张量,并生成形状为 [1, 1000] 的张量。
形状中每个维度的含义由其 布局 指定。布局是对形状维度的解读。OpenVINO 工具套件转换工具和 API 可保持所有维度及其顺序不变,并与原始框架模型保持一致。通常,原始模型不会明确包含布局信息, 但在 OpenVINO 运行时 API 中的各种预处理和后处理场景中,有时需要明确指定布局。我们建议在模型转换期间指定输入/输出的布局。
OpenVINO 还支持 部分定义的形状 ,此类形状有部分维度未定义。未定义维度也会原封不动地保留在最终的中间表示文件中,您可以稍后在运行时期间定义它们。未定义维度可用作某些硬件和模型的 动态维度 ,让您能够在每个推理请求中动态更改输入数据的形状。例如,BERT 模型中的序列长度维度可以保留为未定义,而且该维度上各种大小的数据可以馈送到 CPU 上。
要了解模型在 OpenVINO™ 运行时中的表示方式,请参阅 OpenVINO™ 运行时中的模型表示 。