Ich versuche, Tensorflow Inception-Code für mehrere GPUs (auf 1 Maschine) zu gehen. Ich bin verwirrt, weil wir mehrere Verluste aus den verschiedenen Türmen, auch bekannt als die GPUs erhalten, wie ich sie verstehe, aber die loss
Variable scheint ausgewertet nur der letzte Turm zu sein und nicht die Summe der Verluste aus allen Türmen:Tensorflow Inception Multiple GPU Trainingsverlust wird nicht summiert?
for step in xrange(FLAGS.max_steps):
start_time = time.time()
_, loss_value = sess.run([train_op, loss])
duration = time.time() - start_time
wo loss
zuletzt speziell für jeden Turm definiert wurde:
for i in xrange(FLAGS.num_gpus):
with tf.device('/gpu:%d' % i):
with tf.name_scope('%s_%d' % (inception.TOWER_NAME, i)) as scope:
# Force all Variables to reside on the CPU.
with slim.arg_scope([slim.variables.variable], device='/cpu:0'):
# Calculate the loss for one tower of the ImageNet model. This
# function constructs the entire ImageNet model but shares the
# variables across all towers.
loss = _tower_loss(images_splits[i], labels_splits[i], num_classes,
scope)
Könnte jemand erklären, wo der Schritt die Verluste aus verschiedenen Türmen zu kombinieren? Oder sind wir einfach der Verlust eines einzigen Turms, der auch die Verluste des anderen Turms repräsentiert?
Hier ist der Link zum Code: https://github.com/tensorflow/models/blob/master/inception/inception/inception_train.py#L336