Теги Tensorflow и экспорт - PullRequest
       40

Теги Tensorflow и экспорт

0 голосов
/ 06 июня 2018

Я очень запутался, как теги должны работать в хабе и как их использовать при экспорте.Как я могу тренироваться в железнодорожной части моего графика и экспортировать обслуживающую?m с tags={'train'}, я думаю, что использую правильный для обучения.Означает ли это, что я только экспортирую файл с тегом train?Как использовать train для обучения и set() (по умолчанию) для подачи?

1 Ответ

0 голосов
/ 06 июня 2018

В лучшем (т.е. простейшем) случае вашему модулю вообще не нужны какие-либо теги, а именно, когда один и тот же фрагмент графика TensorFlow соответствует всем предполагаемым применениям модуля.Для этого просто оставьте tags или tags_and_args не установленными, чтобы получить значение по умолчанию (пустой набор тегов).

Теги необходимы, если одному и тому же модулю требуется более одной версии своего графа, скажем, aобучающая версия, которая применяет отсев в режиме обучения, и выводная версия, которая делает отсев бездействующим.Как правило, вы увидите код, подобный

def module_fn(training):
  inputs = tf.placeholder(dtype=tf.float32, shape=[None, 50])
  layer1 = tf.layers.fully_connected(inputs, 200)
  layer1 = tf.layers.dropout(layer1, rate=0.5, training=training)
  layer2 = tf.layers.fully_connected(layer1, 100)
  outputs = dict(default=layer2)
  hub.add_signature(inputs=inputs, outputs=outputs)

...

tags_and_args = [(set(), {"training": False}),
                 ({"train"}, {"training": True})]
module_spec = hub.create_module_spec(module_fn, tags_and_args)

. При создании спецификации модуля запускается module_fn для all dict с указанным аргументом и хранится all графиков, построенных ими засцены.Когда вы создаете модуль из этой спецификации и затем экспортируете его, он будет содержать все созданные версии графов, помеченные соответствующими наборами строк.

Аргумент tags=... для m = hub.Module(...) просто контролирует, какиеразличных версий графа используется в текущем графе, скажем, когда вызывается m (т.е. применяется к входам).Это не ограничивает то, что пишет m.export(...).

...