---
title: 变量初始化和数据预处理初始化在同一子图导致训练异常-昇腾社区
description: 某些网络，例如LeNet网络迁移至昇腾AI处理器上训练时，loss不收敛，精度很低且不变。  同时发现变量初始化全0。
keywords: 变量初始化;数据预处理初始化
url: https://www.hiascend.com/document/caselibrary/detail/topic_0000001291151198
section: (其他)
---

# 变量初始化和数据预处理初始化在同一子图导致训练异常-昇腾社区

URL: https://www.hiascend.com/document/caselibrary/detail/topic_0000001291151198
描述: 某些网络，例如LeNet网络迁移至昇腾AI处理器上训练时，loss不收敛，精度很低且不变。  同时发现变量初始化全0。
关键词: 变量初始化;数据预处理初始化

昇腾文档 [了解详情](https://www.hiascend.com/document)

故障案例 [了解详情](https://www.hiascend.com/document/caselibrary)

变量初始化和数据预处理初始化在同一子图导致训练异常

变量初始化和数据预处理初始化在同一子图导致训练异常

2022/08/16

718

问题信息

| 问题来源 | 产品大类 | 产品子类 | 关键字 |
| --- | --- | --- | ---|
| 官方 | 模型训练 | TensorFlow | 变量初始化、数据预处理初始化 |

#### 问题现象描述

某些网络，例如LeNet网络迁移至昇腾AI处理器上训练时，loss不收敛，精度很低且不变。

同时发现变量初始化全0。

#### 原因分析

分析用户的训练脚本：

```
sess.run(tf.group(      
    tf.global_variables_initializer(),  # 变量初始化
    tf.local_variables_initializer(),   # 变量初始化
    iterator.initializer                # 数据预处理初始化
    ))
```

基于上面这种写法，TF在图拆分时，会将变量初始化和数据预处理初始化在同一子图中，变量初始化需要下沉到Device侧执行，而数据预处理初始化无法下沉，导致整个子图无法下沉到昇腾AI处理器。

变量初始化在Host侧执行，会导致初始化全0。

#### 解决措施

为保证TF在图拆分时，将变量初始化和数据预处理初始化拆分成不同的子图，建议用户脚本分开执行：

```
sess.run(tf.group(      
    tf.global_variables_initializer(),  # 变量初始化
    tf.local_variables_initializer(),   # 变量初始化
    ))
sess.run(iterator.initializer)        # 数据预处理初始化
```

本页内容

- 问题信息
- 问题现象描述
- 原因分析
- 解决措施
