Keras迁移

Keras简介

Keras和Estimator类似,都属于TensorFlow高阶API,提供了方便的构图功能,并对训练、评估、验证、导出提供了方便的接口。使用Tensorflow的Keras API进行训练脚本开发的一般步骤为:

  1. 数据预处理。
  2. 模型搭建。
  3. 模型编译。
  4. 模型训练。

当前仅支持通过Tensorflow的Keras API编写的训练脚本,而不支持原生Keras API。

下面介绍如何迁移Keras训练脚本,以便在昇腾AI处理器上进行训练。

头文件增加

对于以下步骤中涉及修改的python文件,新增以下头文件引用,用于导入NPU相关库。

from npu_bridge.npu_init import *

迁移点说明

创建一个TensorFlow会话并且注册Keras,并增加相关配置项以便在昇腾AI处理器执行训练。同时在训练结束时,关闭会话。

import tensorflow as tf
import tensorflow.python.keras as keras
from tensorflow.python.keras import backend as K
from npu_bridge.npu_init import *

sess_config = tf.ConfigProto()
custom_op = sess_config.graph_options.rewrite_options.custom_optimizers.add()
custom_op.name = "NpuOptimizer"
sess_config.graph_options.rewrite_options.remapping = RewriterConfig.OFF
sess_config.graph_options.rewrite_options.memory_optimization = RewriterConfig.OFF
sess = tf.Session(config=sess_config)
K.set_session(sess)

#数据预处理...
#模型搭建...
#模型编译...
#模型训练...

sess.close()

通过以上配置迁移后,一次session.run调用在昇腾AI处理器执行训练迭代的次数固定为1,如需减少Host与Device间的交互次数,缩短训练时长,需要通过model_to_npu_estimator接口,将通过Keras构建的模型转换为NPUEstimator对象,同时通过NPURunConfig中的iterations_per_loop参数,指定一次session.run调用时在昇腾AI处理器执行训练迭代的次数,具体请参考Keras模式下使能训练迭代循环下沉