NPUOutputTensorHook构造函数
功能说明
NPUOutputTensorHook类的构造函数,NPUOutputTensorHook作用于NPUEstimator的train、evaluate、predict流程中的Hook,用于每N步或者结束时调用用户自定义的output_fn,打印输出tensors。NPUOutputTensorHook类继承了LoggingTensorHook类,可以调用基类的原生接口。
函数原型
def __init__(self, tensors,dependencies=None,output_fn=None,output_every_n_steps=0)
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
tensors |
输入 |
输入Tensor的名称集合。字典或列表格式。 |
dependencies |
输入 |
tensors对应的依赖。 |
output_fn |
输入 |
tensors的输出打印函数。 |
output_every_n_steps |
输入 |
会话执行N次和训练脚本执行结束时调用用户定义的output_fn。 |
返回值
返回NPUOutputTensorHook类对象。
约束说明
Iterations_per_loop>1的场景下,无法按照output_every_n_steps指定的值调用output_fn。
调用示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
from npu_bridge.npu_init import * # 定义output_fn def output_fn(inputs): device_id = os.environ["ASCEND_DEVICE_ID"] ouput_file = os.path.join("/code", device_id, "test_npu_output_tensor.txt") for item in inputs: content = "step:{},loss:{}".format(str(item['global_step']), str(item['loss'])) with open(ouput_file, 'a') as f: f.write(content) f.write("\n") # 定义output_hook,用于调用用户定义的output_fn tensors = {'global_step': global_step, 'loss': loss} output_hook = NPUOutputTensorHook( tensors, dependencies=train_op_list, output_fn=output_fn, output_every_n_steps=10) train_hook.append(output_hook) # 在EstimatorSpec传入hook return tf.estimator.EstimatorSpec( mode=mode, predictions=predictions, loss=loss, train_op=train_op, training_chief_hooks=train_hook, eval_metric_ops=metrics) |