就我的论文而言,我正在尝试使用张量流(v 1.14)评估不同参数对我的主动学习对象检测器的影响。
因此,我正在使用来自Zoo模型的fast_rcnn_inception_v2_coco标准配置和固定的random.seed(1)。
[为了确保我有一个正常的基准实验,我尝试使用相同的数据集,学习时间,poolingsize等两次运行对象检测器。
无论如何,经过20个活跃的学习周期后,两个绘制的图有很大不同,您可以在此处看到:是否有可能确保可比的神经网络性能?如果是,如何设置科学实验设置,以比较参数变化的结果,例如学习率,学习时间(这是我们积极学习周期的约束!)poolingsize,...
为了在使用CPU进行培训时获得确定性,以下内容就足够了:
1。设置所有种子
SEED = 123
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.set_random_seed(SEED)
2。限制CPU读为1
session_config.intra_op_parallelism_threads = 1
session_config.inter_op_parallelism_threads = 1
3。数据集工作者
如果使用tf.data.Dataset
,请确保工人人数限制为一个。
4。 HOROVOD
[如果您使用Horovod使用两个以上的GPU进行训练,
os.environ['HOROVOD_FUSION_THRESHOLD']='0'
为了更清楚地检查运行之间的确定性,我建议使用我已记录的方法here。我还建议您使用这种方法来确认两次跑步之间的初始权重(在训练的第一步之前)完全相同。
[有关TensorFlow中确定性的最新信息(请关注使用GPU时的确定性),请查看NVIDIA请我驾驶的tensorflow-determinism项目。