带早停的 Keras 训练:数据分布时它是如何工作的?

问题描述

在 Keras (TF 2.4.1) 中,我正在 Google AI Platform 上训练模型。该作业在具有 1 个主节点和 1 个工作节点的集群上运行。每种机器类型都是 complex_model_m_gpu包括四个 NVIDIA Tesla K80 GPU。我的工作配置为根据我在每个时期计算的指标(recall@k)提前停止。当我在训练完成后查看日志时,我可以看到我的指标在每个时期计算了两次,并且随后的测试以确定指标是否有所改进是在“平行轨道”上进行的,每个轨道不知道另一个。例如在 epoch 1 我得到两个数字:0.13306 和 0.12903。后来在 epoch 3,我得到 0.17 和 0.11; 0.17 与 0.13306 和 0.11 与 0.12903 进行比较(见下图,从下到上阅读)

enter image description here

为什么是两个数字?就像 master 和 worker 分别计算指标一样。有没有办法只得到全局度量并仅确定这个全局数字的改进?

顺便说一下,当我在 Tensorboard 中查看标量图时,我的图很混乱。是不是因为我在多台设备的机器上每个 epoch 得到多个数字?

编辑:我在一台机器上尝试了同样的方法(1 台主机,没有工人),这次我只看到一个数字,我的张量板图不再混乱。我刚刚意识到 master 和 worker 配置可能需要在我的代码中有所不同(tf.distribute.MultiWorkerMirroredStrategy 而不是 MirroredStrategy)。我必须对此进行调查。参考:https://www.tensorflow.org/tutorials/distribute/multi_worker_with_keras

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)