Всем доброго времени суток.
Описание: Следуя известному учебнику CIFAR-10, я обучаю модель на нескольких графических процессорах параллельным данным, то есть имею несколько копий моделиграфик, каждый из которых расположен под tf.name_scope()
s tower_0
, tower_1
и т. д., и распределение обучаемых переменных между этими областями.
Моя потребность: ради простоты и однородностиименования входных тензоров во время логического вывода (например, чтобы иметь тот же граф, что и модели, которые не обучены на мультипроцессоре и, следовательно, не имеют tower_N
область имен верхнего уровня в их графиках), я хочу исключить область верхнего имени tower_N
из графика при сохранении файла ".meta".
Что я пробовал:
[не работает] например, использовать tf.train.export_meta_graph()
с аргументом export_scope
, установленным в tower_0
.Прежде всего, эта функция выполняет изменения на графике глубоко внутри .Следовательно, я не могу использовать его в окончательном графике.Во-вторых, если я подготовлю все это, загрузлю meta_graph.export_scoped_meta_graph()
напрямую и использую его с unbound_inputs_col_name=None
, у меня возникнут проблемы с загрузкой неопределенных несвязанных входных данных в этом случае.
[работал, но уродливо] во время обучения, оставьте модель, которая находится на GPU:0
, вроде "голой", то есть без ее tower_0
области видимости.Таким образом, в моем графике у меня всегда будет ровно одна копия моей модели верхнего уровня с желаемым наименованием тензоров.
Я был бы признателен за любой вклад, потому что моя задача сохранить графикчистота, когда тренировка на нескольких графических процессорах кажется вполне естественной ...