Я пытаюсь пройти начальный код Tensorflow для нескольких графических процессоров (на 1 машине). Я смущен, потому что мы получаем несколько потерь от различных башен, иначе графических процессоров, как я понимаю, но loss
переменной определена, как представляется, только в последней башне, а не сумма убытков от всех башен:Tensorflow Inception Несколько уроков обучения графическому процессору не суммируются?
for step in xrange(FLAGS.max_steps):
start_time = time.time()
_, loss_value = sess.run([train_op, loss])
duration = time.time() - start_time
где loss
Последнее определяется конкретно для каждой башни:
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)
Может кто-нибудь объяснить, где шаг должен объединить потери от различных башен? Или мы просто потеря одиночной башни, как представитель других потерь башни?
Вот ссылка на код: https://github.com/tensorflow/models/blob/master/inception/inception/inception_train.py#L336