文档首页 > > AI工程师用户指南> 管理模型> 压缩和转换模型> 转换模板

转换模板

分享
更新时间:2020/10/15 GMT+08:00

基于不同的AI框架,ModelArts提供的转换模板如下所示:

Caffe转Ascend

转换Caffe框架训练出来的模型, 转换后模型可在Ascend芯片上运行。

此模板无高级选项。

Tensorflow frozen_graph转TFLite

转换Tensorflow框架训练并以“frozen_graph”格式保存的模型,转换后模型可在ARM上运行。

表1 Tensorflow frozen_graph转TFLite的高级选项

参数名称

参数解释

“模型输入tensor名称”

以字符串形式输入模型输入张量名称,以“input1:input2”形式表示。

“模型输出tensor名称”

以字符串形式输入模型输出张量名称,以“output1:output2”形式表示。

“量化精度”

可选择8bit或32bit。32bit表示直接转换模型,8bit表示模型进行量化。

“量化批大小”

以数值形式输入量化批大小。必须为正整数。

Tensorflow saved_model转TFLite

转换Tensorflow框架训练并以“saved_model”格式保存的模型,转换后模型可在ARM上运行。

表2 Tensorflow saved_model转TFLite的高级选项

参数名称

参数解释

“模型签名”

以字符串形式输入模型输入tensor签名,默认会选择第一个签名。

“传入模型标签”

以字符串形式输入模型输出标签,默认会选择第一个标签。

“量化精度”

可选择8bit或32bit。32bit表示直接转换模型,8bit表示模型进行量化。

“量化批大小”

以数值形式输入量化批大小。必须为正整数。

Tensorflow frozen_graph转TensorRT

转换Tensorflow框架训练并以“frozen_graph”格式保存的模型,转换后模型可在GPU上运行。

表3 Tensorflow frozen_graph转TensorRT的高级选项

参数名称

参数解释

“模型输入tensor名称”

以字符串形式输入模型输入张量名称,以“input1:input2”形式表示。

“模型输出tensor名称”

以字符串形式输入模型输出张量名称,以“output1:output2”形式表示。

“量化精度”

可选择8bit或32bit。32bit表示直接转换模型,8bit表示模型进行量化。

“量化批大小”

以数值形式输入量化批大小。必须为正整数。

Tensorflow saved_model转TensorRT

转换Tensorflow框架训练并以“saved_model”格式保存的模型,转换后模型可在GPU上运行。

表4 Tensorflow saved_model转TensorRT的高级选项

参数名称

参数解释

“模型签名”

以字符串形式输入模型输入tensor签名,默认会选择第一个签名。

“传入模型标签”

以字符串形式输入模型输出标签,默认会选择第一个标签。

“量化精度”

可选择8bit或32bit。32bit表示直接转换模型,8bit表示模型进行量化。

“量化批大小”

以数值形式输入量化批大小。必须为正整数。

Tensorflow frozen graph 转 Ascend

转换Tensorflow框架训练并以“frozen_graph”格式保存的模型,转换后模型可在Ascend上运行。

表5 Tensorflow frozen graph 转 Ascend的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,输入数据格式为NHWC,如“input_name:1,224,224,3”,必填项。“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。

TF-FrozenGraph-To-Ascend

转换Tensorflow框架训练并以“frozen_graph”格式保存的模型,转换后模型可在Ascend上运行。转换时支持使用基于TE(Tensor Engine)开发的自定义算子(TE算子)。

表6 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

TF-SavedModel-To-Ascend

转换Tensorflow框架训练并以“saved_model”格式保存的模型,转换后模型可在Ascend上运行。转换时支持使用基于TE(Tensor Engine)开发的自定义算子(TE算子)。

表7 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

Onnx-To-Ascend-TBE

转换onnx格式保存的模型,模型首先被转换为frozen_graph格式,然后再转换为可在Ascend上运行的模型。转换时支持使用基于TBE(Tensor Based Engine)开发的自定义算子(TBE算子)。

表8 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

TF-FrozenGraph-To-Ascend-C32

转换Tensorflow框架训练并以“frozen_graph”格式保存的模型,转换后模型可在Ascend上运行。转换时支持使用基于TBE(Tensor Based Engine)开发的自定义算子(TBE算子)。

表9 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

TF-SavedModel-To-Ascend-C32

转换Tensorflow框架训练并以“saved_model”格式保存的模型,转换后模型可在Ascend上运行。转换时支持使用基于TE(Tensor Engine)开发的自定义算子(TE算子)。

表10 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

TF-FrozenGraph-To-Ascend-HiLens

主要提供给华为HiLens使用,当HiLens Kit系统固件版本为2.2.200.011时建议使用此模板进行转换。支持将TensorFlow frozen_graph模型转换成可在ascend芯片上运行的模型,转换时支持使用基于TE(Tensor Engine)开发的自定义算子。

表11 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

TF-SavedModel-To-Ascend-HiLens

主要提供给华为HiLens使用,当HiLens Kit系统固件版本为2.2.200.011时建议使用此模板进行转换。支持将TensorFlow saved_model模型转换成可在ascend芯片上运行的模型,转换时支持使用基于TE(Tensor Engine)开发的自定义算子。

表12 支持自定义算子转换模板的高级选项

参数名称

参数解释

“输入张量形状”

模型输入数据的shape,如“input_name1:n1,c1,h1,w1;input_name2:n2,c2,h2,w2”“input_name”必须是转换前的网络模型中的节点名称。当模型存在动态shape输入时必须提供。例如“input_name1:?,h,w,c”,该参数必填,其中“?”为batch数,表示1次处理的图片数量,需要根据实际情况填写,用于将动态shape的原始模型转换为固定shape的离线模型。目前不支持批量特性,转换输入张量形状batch只能为1。转换时系统会解析输入模型获取输入张量并打印在日志中,如果不了解所使用模型的输入张量,可参考日志中的解析结果。

“输入数据格式”

支持NCHW和NHWC,默认是NHWC。当原始框架是TensorFlow时,默认是NHWC。如果实际是NCHW的话,需要通过此参数指定NCHW。原始框架为Caffe时,只支持NCHW格式。

“转换输出节点”

指定输出节点,例如“node_name1:0;node_name1:1;node_name2:0”,其中“node_name”必须是模型转换前的网络模型中的节点名称,冒号后的数字表示第几个输出,例如“node_name1:0”,表示节点名称为“node_name1”的第0个输出。如果不指定输出节点,则模型的输出默认为最后一层的算子信息,某些情况下,用户想要查看某层算子参数是否合适,则需要将该层算子的参数输出,即可以在模型转换时通过该参数指定输出某层算子。转换时系统会解析输入模型获取输出节点并打印在日志中,如果不了解所使用模型的输入张量,可以参考日志中的解析结果。

“优选数据格式”

指定网络算子优先选用的数据格式,“ND(N<=4)”“5D”。仅在网络中算子的输入数据同时支持“ND”“5D”两种格式时,指定该参数才会生效。“ND”表示模型中算子按NCHW转换成通用格式,“5D”表示模型中算子按华为自研的5维转换成华为格式。“5D”为默认值。

“生成高精度模型”

指定是否生成高精度FP16 Davinci模型。“0”为默认值,表示生成普通FP16 Davinci模型,推理性能更好。“1”表示生成高精度FP16 Davinci模型,推理精度更好。高精度当前仅支持Caffe算子(Convolution、Pooling、FullConnection)和TensorFlow算子(tf.nn.conv2d、tf.nn.max_poo)。

“网络输出数据类型”

FP32为默认值,推荐分类网络、检测网络使用。图像超分辨率网络,推荐使用UINT8,推理性能更好。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问