无法使用 tensorflow 的 DNN 估计器在 GCP 的 AI 平台上获得可重现的结果



问题

我无法使用 TensorFlow 1.14 在 GCP 的 AI 平台上获得可重现的结果。这使得超参数调优变得困难,因为我不确定性能的变化是由于超参数本身还是由于随机性。

该模型是一个简单的开箱即用的 DNN 估计器。

我尝试过什么

  • 在运行配置中设置随机种子
  • 设置全局图形种子

在我的task.py文件中,我有以下内容:

tf.set_random_seed(42)
...
run_config = tf.estimator.RunConfig(tf_random_seed=42)
estimator = tf.estimator.DNNClassifier(
feature_columns=feature_columns,
n_classes=len(target_list),
optimizer=tf.compat.v1.train.AdamOptimizer(learning_rate=args.learning_rate),
batch_norm=True,
model_dir=model_dir,
config=run_config)
...

为了获得可重复的结果,还需要做其他事情吗?

如果使用参数服务器策略进行分布式训练,则无法获得可重复性。 如果可重复性对您很重要,请使用镜像策略(或多工作线程镜像策略(。根据设计,参数服务器无法获得可重复性 - 参数服务器更快,因为它通过不等待落后的工作器来避免尾部延迟。

最新更新