我有一个使用MonitoredTrainingSession进行分布式计算的RNN。我使用global_step来标识每个工作节点应该处理哪一批输入数据。
我在创建会话之前定义了张量
global_step_tensor = tf.Variable(0, dtype=tf.int32, trainable=False, name=‘global_step’)...minimise = optimiser.minimize(loss, name=‘adam_opt’, global_step=‘global_step’)with tf.train.MonitoredTrainingSession(...) as sess: graph=tf.get_default_graph() curr_step=sess.run(global_step_tensor) print(curr_step) #输出366
我以为这个变量只有在评估优化器时才会被增加?为什么它从366开始?
编辑 我的集群定义为一个参数服务器和两个工作节点。目前,在测试过程中,这三个都在同一主机上通过不同的端口运行。
回答:
根据文档,MonitoredTrainingSession有几个默认参数,可以自动创建检查点:
save_checkpoint_secs:使用默认检查点保存器保存检查点的频率,单位为秒。如果save_checkpoint_secs设置为None,则不使用默认检查点保存器。
save_summaries_steps:使用默认摘要保存器将摘要写入磁盘的频率,单位为全局步骤数。如果save_summaries_steps和save_summaries_secs都设置为None,则不使用默认摘要保存器。默认值为100。
save_summaries_secs:使用默认摘要保存器将摘要写入磁盘的频率,单位为秒。如果save_summaries_steps和save_summaries_secs都设置为None,则不使用默认摘要保存器。默认未启用。
也许这就是为什么你的当前批次不再是0的原因。