在此line,计算多GPU中每个塔的每个损失
然而,这些损失并不是平均值,似乎上次GPU的损失用于返回loss。
这是故意的(如果是,为什么?)或者它是代码中的错误吗?
答案 0 :(得分:2)
在此line,请注意,损失位于不同的名称范围内(tf.name_scope('%s_%d'%(cifar10.TOWER_NAME,i)));所以,如果我理解正确的话,那并不是只使用最后一个GPU的损失;相反,使用每个GPU的相应命名范围内的所有损失。
每个塔(对应于每个GPU)都会有一个损失,用于计算梯度。损失不是平均值;相反,所有塔的所有梯度均在第196行平均。
请注意,在本教程的这个图中,没有针对所有个体损失的聚合,它是平均的渐变。