我正在编写一个tensorflow.Keras的包装器,以执行机器学习实验。
我需要我的框架能够按照配置yaml文件指定的实验进行并行GPU运行。
然后,我需要保证如果我再次运行实验,我会得到与之前相同或者相似的结果。
为了尝试确保这一点,我的训练脚本在开头包含以下代码,遵循官方文档的指导。
我需要我的框架能够按照配置yaml文件指定的实验进行并行GPU运行。
然后,我需要保证如果我再次运行实验,我会得到与之前相同或者相似的结果。
为了尝试确保这一点,我的训练脚本在开头包含以下代码,遵循官方文档的指导。
# Set up random seeds
random.seed(seed)
np.random.seed(seed)
tf.set_random_seed(seed)
这已经被证明是不够的。
我运行了相同的配置4次,并绘制了结果:
正如您所见,不同运行结果差异很大。
我该如何在Keras中设置训练会话以确保在GPU上训练时获得相似的结果?这是否可能?
完整的训练脚本可以在此处找到。
我的一些同事正在使用纯TF,他们的结果似乎更加一致。而且,除了确保训练和验证拆分始终相同之外,他们似乎没有种植任何随机性。