---
title: 数据预处理使用tf.keras.backend.zeros生成变量，训练报错变量未初始化
description: "训练报错变量算子未初始化："
url: https://www.hiascend.com/document/detail/zh/TensorFlowCommercial/latest/migration/tfmigr1/tfmigr1_000138.html
sourcePath: /source/zh/TensorFlowCommercial/900/migration/tfmigr1/tfmigr1_000138.html
indexId: 21abea1ba36f6739f3d8b28a78e3b925246011a5476c954cee1f9d24f09986ea73
---
# 数据预处理使用tf.keras.backend.zeros生成变量，训练报错变量未初始化

#### 问题现象

训练报错变量算子未初始化：


#### 原因分析

数据预处理使用tf.keras.backend.zeros生成变量，变量算子无法下沉到Device侧执行，从而导致变量算子初始化失败。


#### 解决方案

修改训练脚本，不使用tf.keras.backend.zeros生成变量，而直接使用TensorFlow原生接口tf.zeros以tensor形式在Host侧生成变量。

原始脚本：

```
y = {
   'mlm_loss': tf.keras.backend.zeros([1]),
   'mlm_acc': tf.keras.backend.zeros([1]),
}
```

修改后脚本：

```
y = {
   'mlm_loss': tf.zeros([1]),
   'mlm_acc': tf.zeros([1]),
}
```
