华为云AI开发平台ModelArts转换模板_云淘科技

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

Caffe转Ascend
Tensorflow frozen graph 转 Ascend
TF-FrozenGraph-To-Ascend
TF-SavedModel-To-Ascend
Onnx-To-Ascend-TBE
TF-FrozenGraph-To-Ascend-C32
TF-SavedModel-To-Ascend-C32
TF-FrozenGraph-To-Ascend-HiLens
TF-SavedModel-To-Ascend-HiLens

Caffe转Ascend

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

此模板无高级选项。

Tensorflow frozen graph 转 Ascend

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

表1 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算子)。

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

参数名称

参数解释

“输入张量形状”

模型输入数据的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算子)。

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

参数名称

参数解释

“输入张量形状”

模型输入数据的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算子)。

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

参数名称

参数解释

“输入张量形状”

模型输入数据的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算子)。

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

参数名称

参数解释

“输入张量形状”

模型输入数据的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算子)。

表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-FrozenGraph-To-Ascend-HiLens

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

表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,推理性能更好。

TF-SavedModel-To-Ascend-HiLens

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

表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,推理性能更好。

父主题: 模型转换

同意关联代理商云淘科技,购买华为云产品更优惠(QQ 78315851)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家