---
title: --customize_dtypes
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/atctool/atlasatcparam_16_0075.html
sourcePath: /source/zh/canncommercial/900/devaids/atctool/atlasatcparam_16_0075.html
indexId: 40896948e11bcd91e60e517ca5226f51a9272e64be7b220a78b16dccafe5a1b872
---
# --customize_dtypes

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |


#### 功能说明

模型编译时自定义某个或某些算子的计算精度。


#### 关联参数

- 若本参数与  --precision_mode
或  --precision_mode_v2
配合使用时，除本参数指定的算子外，模型中其它算子按  --precision_mode
或  --precision_mode_v2
参数配置的精度模式来编译。
-   --customize_dtypes
参数与  --keep_dtype
参数都用于设置算子的计算精度，若涉及需提升模型推理精度的场景，建议先使用  --keep_dtype
参数保持原图精度，若精度依然得不到提升，可以尝试使用  --customize_dtypes
参数自定义某个或某些算子的计算精度。
  但需注意，使用--customize_dtypes参数且通过配置算子名称的方式，可能会由于内部模型优化过程中的融合、拆分等操作导致算子名称发生变化，进而导致配置不生效，未达到提升精度的目的，可进一步获取日志定位问题，关于日志的详细说明请参见《日志参考(https://www.hiascend.com/document/detail/zh/canncommercial/900/maintenref/logreference/logreference_0001.html)》。

- 若同时使用了  --customize_dtypes
参数与  --keep_dtype
参数，则以  --customize_dtypes
参数设置的精度为准。


#### 参数取值

参数值：算子配置文件路径以及文件名，配置文件中列举需要自定义计算精度的算子名称或算子类型，每个算子单独一行。

参数值约束：

- 若为算子名称，以Opname::InputDtype:dtype1,...,OutputDtype:dtype1,...格式进行配置，每个Opname单独一行，dtype1，dtype2...需要与可设置计算精度的算子输入，算子输出的个数一一对应。
- 若为算子类型，以OpType::TypeName:InputDtype:dtype1,...,OutputDtype:dtype1,...格式进行配置，每个OpType单独一行，dtype1，dtype2...需要与可设置计算精度的算子输入，算子输出的个数一一对应，且算子OpType必须为基于Ascend IR定义的算子的OpType，算子类型查看方法请参见  如何确定原始框架网络模型中的算子与AI处理器支持的算子的对应关系
。
- 对于同一个算子，如果同时配置了Opname和OpType的配置项，编译时以Opname的配置项为准。
- 使用该参数指定某个算子的计算精度时，如果模型转换过程中该算子被融合掉，则该算子指定的计算精度不生效。

参数值格式：路径和文件名：支持大小写字母（a-z，A-Z）、数字（0-9）、下划线（_）、短横线（-）、句点（.）、英文冒号(:)、中文汉字。


#### 推荐配置及收益

无。


#### 示例

- 若配置文件中为算子名称，则配置样例为（文件名举例为customize_dtypes.cfg）：

```
Opname1
::InputDtype:
dtype1,dtype2,...,
OutputDtype:
dtype1,...
Opname2
::InputDtype:
dtype1,dtype2,...,
OutputDtype:
dtype1,...
```


- 若配置文件中为算子类型，则配置样例为（文件名举例为customize_dtypes.cfg）：

```
OpType::
TypeName1
:InputDtype:
dtype1,dtype2,...,
OutputDtype:
dtype1,...
OpType::
TypeName2
:InputDtype:
dtype1,dtype2,...,
OutputDtype:
dtype1,...
```


算子具体支持的计算精度可以从《算子库(https://www.hiascend.com/document/detail/zh/canncommercial/900/API/aolapi/operatorlist_00001.html)》 > “CANN算子规格说明”中查看。

以TensorFlow ResNet50网络模型中的Relu算子为例，其对应的Ascend IR定义的算子类型为Relu，该算子输入和输出只有一个，该配置样例如下：

- 算子名称配置样例：

```
fp32_vars/Relu::InputDtype:float16,OutputDtype:int8
```


- 算子类型配置样例：

```
OpType::Relu:InputDtype:float16,OutputDtype:int8
```


将配置好的customize_dtypes.cfg文件上传到ATC工具所在服务器的任意目录，例如上传到$HOME，使用示例如下：

```
--customize_dtypes=
$HOME/customize_dtypes.cfg
--precision_mode=
force_fp16
```

模型编译时，customize_dtypes.cfg文件中的算子，使用指定的计算精度，其余网络模型中的算子以--precision_mode或--precision_mode_v2参数指定的精度模式进行编译。


#### 使用约束

1. 使用该参数指定算子的计算精度，由于其优先级高于  --precision_mode
或  --precision_mode_v2
、  --keep_dtype
参数，可能会导致后续推理精度或者性能的下降。
2. 使用该参数指定算子的计算精度，如果指定的精度算子本身不支持，则会导致模型编译失败。
