Python 如何确保神经网络性能的可比性?
在我的论文中,我试图用tensorflow(V1.14)评估不同参数对我的主动学习对象检测器的影响 因此,我使用的是来自ModelZoo的更快的\uRCNN\uInception\uV2\uCoco标准配置和一个固定的random.seed(1) 为了确保我有一个有效的基线实验,我尝试使用相同的数据集、学习时间、池大小等运行对象检测器两次 无论如何,20个主动学习周期后绘制的两个图是完全不同的,如您所见:Python 如何确保神经网络性能的可比性?,python,tensorflow,machine-learning,data-science,object-detection,Python,Tensorflow,Machine Learning,Data Science,Object Detection,在我的论文中,我试图用tensorflow(V1.14)评估不同参数对我的主动学习对象检测器的影响 因此,我使用的是来自ModelZoo的更快的\uRCNN\uInception\uV2\uCoco标准配置和一个固定的random.seed(1) 为了确保我有一个有效的基线实验,我尝试使用相同的数据集、学习时间、池大小等运行对象检测器两次 无论如何,20个主动学习周期后绘制的两个图是完全不同的,如您所见: 是否有可能确保可比较的神经网络性能?如果是,如何设置科学实验设置,比较参数变化结果,如学习
是否有可能确保可比较的神经网络性能?如果是,如何设置科学实验设置,比较参数变化结果,如学习率、学习时间(这是我们主动学习周期中的一个限制!)池化,要在CPU上进行培训时实现确定性,以下内容应足够: 1。设置所有种子
SEED = 123
os.environ['PYTHONHASHSEED']=str(SEED)
random.seed(SEED)
np.random.seed(SEED)
tf.set_random_seed(SEED)
2。将CPU线程限制为一个
session_config.intra_op_parallelism_threads = 1
session_config.inter_op_parallelism_threads = 1
3。数据集分片
如果您使用的是tf.data.Dataset
,请确保碎片数量限制为一个
4。梯度选通
对于确定性功能,某些类型的模型可能需要会话配置中的gate\u gradients=tf.train.Optimizer.gate\u OP
5。霍洛沃德
如果您使用Horovod使用两个以上的GPU进行训练,就像这样
os.environ['HOROVOD_FUSION_THRESHOLD']='0'
为了更清楚地检查两次运行之间的确定性,我建议使用我记录的方法。我还建议使用这种方法来确认初始重量(在训练的第一步之前)在两次跑步之间完全相同
有关TensorFlow中决定论的最新信息(使用GPU时关注决定论),请查看NVIDIA付钱让我驾驶的项目