【问题标题】:Tensorflow low accuracy when training with multi GPU使用多 GPU 训练时 Tensorflow 精度低
【发布时间】:2018-03-02 11:42:38
【问题描述】:

在多 GPU 上训练时,我得到较低的准确度是否正常?例如,当我在具有 n 批大小的单个 GPU 上进行训练时,我得到了 63% 的准确率。但是,当我使用 4 个 GPU 进行训练时,每个 GPU 的批量大小为 n,我的准确率只有 58%。两个案例都训练了 100 个 epoch

我猜梯度的平均在某种程度上使优化器变得困难。有人遇到过同样的事情吗?

【问题讨论】:

  • 你在使用set_random_seed吗?您是否多次观察到此问题?
  • 这是什么意思?我手动配置了训练
  • 精度差异可能是随机的,与使用一个或多个 GPU 无关。如果您使用set_random_seed,培训课程每次都会产生相同的结果。
  • 不,我对每个案例重复了 2 次训练。同样的事情发生了,多 GPU 的准确率总是很低
  • 我也很想知道这个。我注意到在使用 3 个 GPU 和 4 个 GPU 之间,使用具有相同数据和超参数的相同模型会导致准确度下降。

标签: python tensorflow deep-learning


【解决方案1】:

由于模型是在 100 个 epoch 之后训练的,因此您可以推断模型并在 CPU 本身上找到准确度,因为它的计算量并不大。但是,如果您想在训练时观察准确度,则可能很难从每个 GPU 中找到准确度并进行平均,这可能无法说明正在训练的模型有多好。

【讨论】:

  • 不知何故我找到了原因。我没有为每个 GPU 使用 n 个批量大小,而是使用了 batch_size = (batch_size / num_gpus)。所以说,你有 128 的 batch_size 并且想要使用 4 个 GPU,你会为每个 GPU 使用 32 的批量大小而不是 128。批量大小确实对准确性有显着影响
猜你喜欢
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
相关资源
最近更新 更多