模型转换时支持指定网络的输入节点、输出节点的Datatype、Format、模型转换支持精度选择等关键参数。
假如,针对TensorFlow框架ResNet-50网络模型,要求转换后离线模型的输入数据为FP16类型,指定MaxPoolWithArgmax算子作为输出算子(对应的节点名称为fp32_vars/MaxPoolWithArgmax),并且指定该输出节点的数据类型为FP16。该场景下就需要分别使用--input_fp16_nodes、--out_nodes、--output_type等参数来实现上述功能。
本章节以TensorFlow框架ResNet-50网络模型为例进行演示,参见1获取原始模型文件。
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"
成功执行命令后,在output参数指定的路径下,可查看离线模型(如:tf_resnet50.om)。
atc --mode=1 --om=$HOME/module/out/tf_resnet50.om --json=$HOME/module/out/tf_resnet50.json
图1为MaxPoolWithArgmax算子作为模型输出算子的示意图。