Skip to main content

aclmdlGetOutputDims

aclmdlGetInputDims

函数功能

根据模型描述信息获取模型的输入tensor的维度信息。同步接口。

如果模型中含有静态AIPP配置信息,您可以根据实际需要选择aclmdlGetInputDims接口或aclmdlGetInputDimsV2接口查询维度信息,两者的区别在于:

  • 通过aclmdlGetInputDims接口获取的维度信息,各维度的值与输入图像的各维度的值保持一致,详细规则如表1所示。
  • 通过aclmdlGetInputDimsV2接口获取的维度信息,H维度的值 = 输入图像的H维度值*系数,不同图片格式下C维度的值不同,详细规则如aclmdlGetInputDimsV2接口处的表1所示,且各维度值相乘的结果值与通过aclmdlGetInputSizeByIndex接口获取的值保持一致。

函数原型

aclError aclmdlGetInputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims)

参数说明

参数名输入/输出说明
modelDesc输入aclmdlDesc类型的指针。 需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。
index输入指定获取第几个输入的Dims,index值从0开始。
dims输出输入维度信息的指针。 针对动态Batch、动态分辨率(宽高)的场景,输入tensor的dims中batch size或宽高为-1,表示其动态可变。例如,输入tensor的format为NCHW,在动态Batch场景下,动态可变的输入tensor的dims为[-1,3,224,224];在动态分辨率场景下,动态可变的输入tensor的dims为[1,3,-1,-1]。举例中的斜体部分以实际情况为准。 若tensor的name长度大于127,则在输出的dims.name时,AscendCL会将tensor的name转换为“acl_modelId_${id}input${index}${随机字符串} ”格式(如果转换后的tensor的name与模型中已有的tensor的name冲突,则会在转换后的name尾部增加“${随机字符串} ”,否则不会增加随机字符串),并在转换后的name与原name之间建立映射关系,用户可调用aclmdlGetTensorRealName接口,传入转换后的name,获取原name(若向接口传入原name,则获取的还是原name);若tensor的name长度小于或等于127,则在输出的dims.name时,按tensor的name输出。

表1 静态AIPP场景下的维度定义规则

图像格式Format参考格式维度定义规则
YUV420SP_U8NHWCn,h,w,c
XRGB8888_U8NHWCn,h,w,c
RGB888_U8NHWCn,h,w,c
YUV400_U8NHWCn,h,w,c
ARGB8888_U8NHWCn,h,w,c
YUYV_U8NHWCn,h,w,c
YUV422SP_U8NHWCn,h,w,c
AYUV444_U8NHWCn,h,w,c

返回值说明

返回0表示成功,返回非0表示失败。

父主题: aclmdlDesc

aclmdlGetInputDimsV2

函数功能

根据模型描述信息获取模型的输入tensor的维度信息。同步接口。

如果模型中含有静态AIPP配置信息,您可以根据实际需要选择aclmdlGetInputDims接口或aclmdlGetInputDimsV2接口查询维度信息,两者的区别在于:

  • 通过aclmdlGetInputDims接口获取的维度信息,各维度的值与输入图像的各维度的值保持一致,详细规则如表1所示。
  • 通过aclmdlGetInputDimsV2接口获取的维度信息,H维度的值 = 输入图像的H维度值*系数,不同图片格式下C维度的值不同,详细规则如aclmdlGetInputDimsV2接口处的表1所示,且各维度值相乘的结果值与通过aclmdlGetInputSizeByIndex接口获取的值保持一致。

函数原型

aclError aclmdlGetInputDimsV2(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims)

参数说明

参数名输入/输出说明
modelDesc输入aclmdlDesc类型的指针。 需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。
index输入指定获取第几个输入的Dims,index值从0开始。
dims输出输入维度信息的指针。 针对动态Batch、动态分辨率(宽高)的场景,输入tensor的dims中batch size或宽高为-1,表示其动态可变。例如,输入tensor的format为NCHW,在动态Batch场景下,动态可变的输入tensor的dims为[-1,3,224,224];在动态分辨率场景下,动态可变的输入tensor的dims为[1,3,-1,-1]。举例中的斜体部分以实际情况为准。 若tensor的name长度大于127,则在输出的dims.name时,AscendCL会将tensor的name转换为“acl_modelId_${id}input${index}${随机字符串} ”格式(如果转换后的tensor的name与模型中已有的tensor的name冲突,则会在转换后的name尾部增加“${随机字符串} ”,否则不会增加随机字符串),并在转换后的name与原name之间建立映射关系,用户可调用aclmdlGetTensorRealName接口,传入转换后的name,获取原name(若向接口传入原name,则获取的还是原name);若tensor的name长度小于或等于127,则在输出的dims.name时,按tensor的name输出。 针对静态AIPP场景,本接口针对不同格式的图像,对应NHWC的Format格式,当前接口中明确各个维度的定义规则,如表1所示。

表1 静态AIPP场景下的维度定义规则

图像格式Format参考格式维度定义规则
YUV420SP_U8NHWCn,h*1.5,w,1
XRGB8888_U8NHWCn,h,w,4
RGB888_U8NHWCn,h,w,3
YUV400_U8NHWCn,h,w,1
ARGB8888_U8NHWCn,h,w,4
YUYV_U8NHWCn,h,w,2
YUV422SP_U8NHWCn,h*2,w,1
AYUV444_U8NHWCn,h,w,4

返回值说明

返回0表示成功,返回非0表示失败。

父主题: aclmdlDesc

aclmdlGetOutputDims

函数功能

根据模型描述信息获取指定的模型输出tensor的维度信息。同步接口。

固定Shape场景下,通过该接口获取指定的模型输出tensor的维度信息。

动态Shape(动态Batch或动态分辨率)场景下,通过该接口获取最大档的维度信息。

函数原型

aclError aclmdlGetOutputDims(const aclmdlDesc *modelDesc, size_t index, aclmdlIODims *dims)

参数说明

参数名输入/输出说明
modelDesc输入aclmdlDesc类型的指针。 需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。
index输入指定获取第几个输出的Dims,index值从0开始。
dims输出输出维度信息的指针。 若tensor的name长度大于127,则在输出的dims.name时,系统会将tensor的name转换为“acl_modelId_${id}output${index} ${随机字符串} ”格式(如果转换后的tensor的name与模型中已有的tensor的name冲突,则会在转换后的name尾部增加“${随机字符串} ”,否则不会增加随机字符串),并在转换后的name与原name之间建立映射关系,用户可调用aclmdlGetTensorRealName接口,传入转换后的name,获取原name(若向接口传入原name,则获取的还是原name);若tensor的name长度小于或等于127,则在输出的dims.name时,按tensor的name输出。

返回值说明

返回0表示成功,返回非0表示失败。

父主题: aclmdlDesc

aclmdlGetInputNameByIndex

函数功能

根据模型描述信息获取模型中指定输入的输入名称。同步接口。

函数原型

const char *aclmdlGetInputNameByIndex(const aclmdlDesc *modelDesc, size_t index)

参数说明

参数名输入/输出说明
modelDesc输入aclmdlDesc类型的指针。 需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。
index输入指定获取第几个输入的名称,index值从0开始。

返回值说明

返回指定输入的输入名称。

父主题: aclmdlDesc

aclmdlGetOutputNameByIndex

函数功能

根据模型描述信息获取模型中指定输出的输出算子名称、算子输出边的下标、top名称或输出名称。同步接口。

函数原型

const char *aclmdlGetOutputNameByIndex(const aclmdlDesc *modelDesc, size_t index)

参数说明

参数名输入/输出说明
modelDesc输入aclmdlDesc类型的指针。 需提前调用aclmdlCreateDesc接口创建aclmdlDesc类型的数据。
index输入指定获取第几个输出的输出算子名称、算子输出边下标、top名称或输出名称,index值从0开始。

返回值说明

返回指定输出的输出算子名称、算子输出边的下标、top名称或输出名称。不同原始网络、不同构建模型的方式,调用本接口获取的返回值格式不同。

  • Caffe网络

    返回值格式如下,各项之间以冒号分割,如果模型中包含top名称就返回,不包含就不返回:

    输出算子名称 : 算子输出边下标 : top名称
  • TensorFlow网络

    • 使用ATC工具构建om模型的场景下,返回值格式如下,各项之间以冒号分割:

      输出算子名称 : 算子输出边下标
    • 使用Ascend Graph接口构建om模型的场景下,返回值格式如下,各项之间以下划线分割:

      output_网络输出下标_输出算子名称_算子输出边下标
  • ONNX网络

    返回值格式如下,各项之间以冒号分割:

    输出算子名称 : 算子输出边下标 : 输出名称

    如果构建om模型时,不指定网络模型中输出算子的名称或网络模型中输出的名称(系统会自动从原始模型中获取输出的名称),或者仅指定网络模型中输出的名称,则返回值中会包含输出名称。

    使用Ascend Graph接口构建om模型时,如果指定了网络模型中输出算子的名称,则返回值格式如下,各项之间以下划线分割:

    output_网络输出下标_输出算子名称_算子输出边下标

父主题: aclmdlDesc

在线提单