昇腾社区首页
中文
注册

自定义离线模型的输入输出数据类型

场景介绍

模型转换时支持指定网络的输入节点、输出节点的DataType、Format、模型转换支持精度选择等关键参数。

假如,针对TensorFlow框架ResNet-50网络模型,要求转换后离线模型的输入数据为Float16类型,指定MaxPoolWithArgmax算子作为输出算子(对应的节点名称为fp32_vars/MaxPoolWithArgmax),并且指定该输出节点的数据类型为FP16。该场景下就需要分别使用--input_fp16_nodes--out_nodes--output_type等参数来实现上述功能。

转换方法

本章节以TensorFlow框架ResNet50网络模型为例进行演示,单击Link,根据页面提示获取ResNet50网络模型文件(*.pb)。

  1. 以CANN软件包运行用户登录开发环境,将模型文件(*.pb)上传到开发环境任意路径,例如上传到$HOME/module/目录下。
  2. 执行如下命令生成离线模型。(如下命令中使用的目录以及文件均为样例,请以实际为准)
    atc --model=$HOME/module/resnet50_tensorflow_1.7.pb  --framework=3 --output=$HOME/module/out/tf_resnet50 --soc_version=<soc_version>  --input_fp16_nodes="Placeholder" --out_nodes="fp32_vars/MaxPoolWithArgmax:0" --output_type="fp32_vars/MaxPoolWithArgmax:0:FP16"  

    关键参数解释如下:

    • --input_fp16_nodes:指定输入数据类型为Float16。
    • --out_nodes:指定MaxPoolWithArgmax算子作为模型的输出。
    • --output_type:指定输出节点的数据类型为Float16。
    • --model:ResNet50网络模型文件所在路径。
    • --framework:原始框架类型,3表示TensorFlow。
    关于参数的详细解释请参见参数说明。若提示如下信息,则说明模型转换成功,若模型转换失败,请参见错误码参考章节进行辅助定位。。
    1
    ATC run success, welcome to the next use.
    

    成功执行命令后,在output参数指定的路径下,可查看离线模型(如:tf_resnet50.om)。图1MaxPoolWithArgmax算子作为模型输出算子的示意图(下图使用Netron可视化软件打开)。

    图1 指定某个算子为离线模型输出