CANN/tensorflow迭代循环设置API
set_iteration_per_loop【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明设置sess.run模式下小循环次数即每次sess.run()在Device侧执行训练迭代的次数可以减少Host与Device间的交互次数缩短训练时长。函数原型def set_iteration_per_loop(sess, train_op, iterations_per_loop1)参数说明参数名输入/输出描述sess输入已经创建的TensorFlow会话。train_op输入更新梯度的操作。iterations_per_loop输入每次sess.run()在Device侧执行训练迭代的次数默认为1且训练迭代总次数必须为iterations_per_loop的整数倍。混合计算模式mix_compile_mode为True时iterations_per_loop必须为1。返回值返回一个算子供用户通过sess.run(op)调用。约束说明由于该接口中有改图的操作如果图无法修改例如冻结了图或者使用tf.train.Supervisor创建session等则无法使用set_iteration_per_loop接口设置大小循环。此种情况下请使用create_iteration_per_loop_var和load_iteration_per_loop_var。调用示例from npu_bridge.npu_init import * config tf.ConfigProto(allow_soft_placementTrue) custom_op config.graph_options.rewrite_options.custom_optimizers.add() custom_op.name NpuOptimizer custom_op.parameter_map[enable_data_pre_proc].b True # 若网络中存在GetNext算子需要设置GetNext算子下沉GetNext算子下沉是迭代循环下沉的必要条件 custom_op.parameter_map[iterations_per_loop].i 10 # 此处设置的值和set_iteration_per_loop接口设置的iterations_per_loop参数值保持一致用于判断是否进行训练迭代下沉 config npu_config_proto(config_protoconfig) # 训练模型 with tf.Session(configconfig) as sess: sess.run(init) # sess.run模式下设置小循环次数为10 train_op util.set_iteration_per_loop(sess, optimizer, 10) # 其中sess为TensorFlow会话optimizer为更新梯度的操作,10为设置的在Device侧进行训练迭代的次数 for epoch in range(training_epochs): avg_cost 0 total_batch int(mnist.train.num_examples / batch_size) for i in range(total_batch): batch_xs, batch_ys mnist.train.next_batch(batch_size) _, c sess.run([train_op, cost], feed_dict{x: batch_xs, y: batch_ys}) avg_cost c / total_batch【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考