---
title: 自定义离线模型的输入输出数据类型
description: "模型转换时支持指定网络的输入节点、输出节点的DataType、Format、模型转换支持精度选择等关键参数。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatc_16_0012.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatc_16_0012.html
indexId: 588318d6eaa04f229a948dc3ae84955956005adedc9e3ce4b292544dbcead98967
---
# 自定义离线模型的输入输出数据类型

#### 场景介绍

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

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


#### 转换方法

本章节以TensorFlow框架ResNet50网络模型为例进行演示，单击Link(https://gitee.com/ascend/ModelZoo-TensorFlow/tree/master/TensorFlow/contrib/cv/resnet50_for_TensorFlow)，根据页面提示获取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。
关于参数的详细解释请参见参数说明。若提示如下信息，则说明模型转换成功，若模型转换失败，请参见“错误码参考(https://www.hiascend.comdocument/detail/zh/canncommercial/900/maintenref/troubleshooting/troubleshooting_0224.html)”章节进行辅助定位。```
ATC run success, welcome to the next use.
```


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