Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TensorFlow';s镜像策略、批量大小和反向传播_Python_Tensorflow_Tensorflow2.0_Distributed Computing_Batchsize - Fatal编程技术网

Python TensorFlow';s镜像策略、批量大小和反向传播

Python TensorFlow';s镜像策略、批量大小和反向传播,python,tensorflow,tensorflow2.0,distributed-computing,batchsize,Python,Tensorflow,Tensorflow2.0,Distributed Computing,Batchsize,我正在处理在多gpu服务器上训练神经网络的问题。我使用的是TensorFlow 2.1中的MirroredStrategy API,我有点困惑 我有8个GPU(Nvidia V100 32GB) 我指定的批大小为32(如何管理?每个gpu将有一批32个样本?是否应指定256作为批大小-32x8-?) 何时以及如何应用反向传播?我读过MirroredStrategy是同步的:这是否意味着在前进步骤之后,所有批次都被分组为一个32x8大小的批次,然后应用反向传播?还是按顺序为每批尺寸为32的产品使

我正在处理在多gpu服务器上训练神经网络的问题。我使用的是TensorFlow 2.1中的MirroredStrategy API,我有点困惑

我有8个GPU(Nvidia V100 32GB)

  • 我指定的批大小为32(如何管理?每个gpu将有一批32个样本?是否应指定256作为批大小-32x8-?)
  • 何时以及如何应用反向传播?我读过MirroredStrategy是同步的:这是否意味着在前进步骤之后,所有批次都被分组为一个32x8大小的批次,然后应用反向传播?还是按顺序为每批尺寸为32的产品使用一次后支撑
我真的很想确定我提交给服务器的是什么样的实验,因为每项培训工作都非常耗时,并且根据可用GPU的数量更改批大小(和备份)会影响结果的正确性


感谢您提供的帮助。

使用MirroredStrategy时,批大小指全局批大小

例如,如果将MirroredStrategy与2个GPU一起使用,则大小为10的每批将在2个GPU中进行划分,每个步骤中接收5个输入示例

因此,在您的情况下,如果希望每个GPU每一步处理32个样本,您可以在同步中将批大小设置为
32*strategy.num\u replications\u


每个GPU将在输入数据的不同切片上计算通过模型的向前和向后传递。然后,从这些切片中计算出的梯度在所有设备中聚合,并在称为AllReduce的过程中减少(通常是平均值)。优化器然后使用这些降低的梯度执行参数更新,从而保持设备同步。

如果提供32个批量大小,则每个GPU将获得一批32个样本,如果使用
tf.data.dataset
tf.distribute.MirroredStrategy
@SwapnilMasurekar,则反向传播如何?您能为您的陈述提供参考吗?反向传播分别应用于每个副本,并使用某种策略(如“全部减少”算法等)聚合权重。您可以参考本文提到的“关键点”来验证批次大小@SwapnilMasurekar。我实际上使用的是生成器,但我认为反向传播仍然是单独进行的。