为什么在Google Cloud ML上训练的TensorFlow模型比在本地训练的模型更准确?

时间:2018-08-23 00:09:17

标签: tensorflow machine-learning object-detection google-cloud-ml

我训练了一个对象检测API模型(来自Zoo的带有COCO / Inception v2的Mask RCNN),具有相同的配置,TensorFlow和模型版本,以及相同(自定义)数据集,用于相同数量的步骤。

在本地计算机上(1080 TI上为tensorflow-gpu),我使用了object_detection / train.py,而在云上,我使用了Google ml-engine作业,调用了object_detection.train模块。两者使用相同的学习率。

运行的云使用了5个工人,而本地的只有1个GPU。它们的批次大小都设置为1。

为什么本地训练的模型执行结果的准确性要差得多?本地训练的模型比其云训练的模型倾向于具有明显更多的误报。

更重要的是,我该怎么办才能使我在本地计算机上的培训达到与云相当的水平?

1 个答案:

答案 0 :(得分:1)

好像您在云上使用了5个工作线程,而在本地仅使用了一个GPU?然后,批次大小是不同的。

有效batchsize是您在命令行上设置的batchsize除以worker数。看起来较低的批量大小确实可以在您的模型上很好地工作。因此,为了提高本地培训的准确性,请将批量大小减小为值的1/5。

此外,如果差异如此之大,您可以明显看出云模型更好,那么也许您应该进行超参数调整以找到更好的参数。在BASIC_GPU设置上执行此操作,以便云上的相同设置也可以在本地运行。