---
title: auto_decomposition
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/devaids/amct/atlasamct_16_0237.html
sourcePath: /source/zh/canncommercial/900/devaids/amct/atlasamct_16_0237.html
indexId: dd8aada51df2d83b339439ebf5f9393f91481cfae6de13ae2b4ac916ff37054465
---
# auto_decomposition

#### 产品支持情况

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


#### 功能说明

根据用户提供的TensorFlow模型文件，生成张量分解后的模型文件。


#### 函数原型

```
add_ops = auto_decomposition(meta_path, ckpt_path, save_path)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| meta\_path | 输入 | 含义：待分解的TensorFlow模型定义文件路径，格式为.meta。 数据类型：string 说明： 请确保.meta能被tf.compat.v1.train.import\_meta\_graph(https://www.tensorflow.org/api\_docs/python/tf/compat/v1/train/import\_meta\_graph)正常加载。 例如：对于使用horovod训练得到的meta文件，必须执行import horovod.tensorflow才能被auto\_decomposition接口调用。 |
| ckpt\_path | 输入 | 含义：待分解的TensorFlow模型权重文件路径，该参数为.data\-XXXXX\-of\-XXXXX文件与.index文件的共同前缀路径。 例如上述两个文件分别为path/model\-200.data\-00000\-of\-00001和path/model\-200.index， 则ckpt\_path取值为path/model\-200。 数据类型：string |
| save\_path | 输入 | 含义：张量分解后所得文件的保存路径，将生成以该路径为前缀的.data\-XXXXX\-of\-XXXXX等文件。 例如该参数设置为path/model，则生成的.data\-XXXXX\-of\-XXXXX文件与.index等文件为： path/model.data\-XXXXX\-of\-XXXXX和path/model.index。 数据类型：string |


#### 返回值说明

张量分解后新添加卷积层的名字的列表，类型为list。


#### 约束说明

- 用户提供用于分解的原始TensorFlow模型，需要保证各模型文件配套使用，即模型定义（.meta）、模型权重（.data-XXXXX-of-XXXXX）及权重索引文件（.index）需配套。
- 用户调用张量分解接口函数，输入原始模型路径以及模型分解后的保存路径，接口函数对符合分解条件的卷积层进行自动分解，约束请参见  分解约束
。


#### 调用示例

```
from amct_tensorflow.tensor_decompose import auto_decomposition
auto_decomposition(meta_path='src_path/model.meta',
                   ckpt_path='src_path/model',
                   save_path='decomposed_path/model'
)
```

落盘文件：

- checkpoint：checkpoint列表文件。
- .meta：张量分解后的模型定义文件。
- .data-00000-of-00001：张量分解后的权重文件。
- .index：张量分解后的权重文件索引。
- .pkl：分解时图结构的改动信息文件，用于  decompose_graph
接口修改原训练代码中的图。
