2016-06-22 2 views
1

cifar10_multi_gpu_train.py

В этом line, каждая потеря для каждой башни в нескольких GPU рассчитывается[Tensorflow]: cifar10_multi_gpu_train.py - непреднамеренная потеря отчетов

Однако эти потери не усредняются, и похоже, что потери от последнего GPU используются для возврата loss.

Это специально (если да, почему?) Или это ошибка в коде?

ответ

2

При этом line обратите внимание, что потери находятся в разных областях (tf.name_scope ('% s_% d'% (cifar10.TOWER_NAME, i))); поэтому, если я правильно понимаю, это не значит, что используется только потеря для последнего графического процессора; вместо этого используются все потери при соответствующей области именования для каждого графического процессора.

Каждая башня (соответствующая каждому графическому процессору) будет иметь потерю, которая используется для вычисления градиента. Потери не усредняются; вместо этого все градиенты для всех башен усредняются по линии 196.

Обратите внимание, что на этом рисунке из учебника отсутствует агрегация для всех индивидуальных потерь, это усредненные градиенты.

enter image description here

+0

Но 'loss' переменная питон, указывая потери от определенного пространства имен (а именно i-й GPU)? –

+0

В соответствии с кодом потери не являются переменной python, а тензором, возвращаемым функцией tower_loss (scope). –

+0

Но разве это не соответствует только одной башне, а не средней потери, рассчитанной по всем башням? –

Смежные вопросы