我正在编写一个 tensorflow.Keras 包装器来执行 ML 实验。
我需要我的框架能够执行配置 yaml 文件中指定的实验并在 GPU 中并行运行。
然后我需要保证,如果我再次运行该实验,即使不是完全相同的结果,我也会得到相当接近的结果。
为了确保这一点,我的训练脚本在开头包含这些行,遵循官方文档中的指导原则:
# Set up random seeds
random.seed(seed)
np.random.seed(seed)
tf.set_random_seed(seed)
Run Code Online (Sandbox Code Playgroud)
这已被证明是不够的。
我运行了 4 次相同的配置,并绘制了结果:
如您所见,运行之间的结果差异很大。
如何在 Keras 中设置训练课程以确保在 GPU 中训练时获得相当相似的结果?这甚至可能吗?
可以在此处找到完整的培训脚本。
我的一些同事只使用纯 TF,他们的结果似乎更加一致。更重要的是,他们似乎没有播种任何随机性,只是为了确保训练和验证拆分始终相同。