Создать хаб-модуль из существующей контрольной точки - PullRequest
0 голосов
/ 07 июня 2018

Можно ли создать модуль hub из существующих контрольных точек без объединения обучающего кода?

1 Ответ

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

Да, абсолютно.Вам нужен сеанс с (1) модулем и (2) правильными значениями в его переменных.Неважно, приходят ли они из реальной подготовки или просто восстановления контрольно-пропускного пункта.Имея библиотеку Python для построения моделей, которая ничего не знает о TensorFlow Hub, вы можете иметь боковой инструмент для экспорта в модуль-концентратор, который выглядит следующим образом:

import tensorflow_hub as hub
import your_library as build_model_body

def module_fn():
  inputs = tf.placeholder(...)
  logits = build_model_body(inputs)
  hub.add_signature(inputs=inputs, outputs=logits)

def main(_):
  spec = hub.create_module_spec(module_fn)
  # Supply a checkpoint trained on a model from the same Python code.
  checkpoint_path = "..."
  # Output will be written here:
  export_path = "..."
  with tf.Graph().as_default():
    module = hub.Module(spec)
    init_fn = tf.contrib.framework.assign_from_checkpoint_fn(
        checkpoint_path, module.variable_map)
    with tf.Session() as session:
      init_fn(session)
      module.export(export_path, session=session)

Замечательные примечания:

  • build_model_body() должен преобразовывать входные данные в выходные (скажем, пиксели в векторы объектов) в соответствии с подходом для модуля-концентратора, но не включать чтение данных или потери и оптимизаторы.Для трансферного обучения их лучше оставить потребителю модуля.Может потребоваться некоторый рефакторинг.

  • Необходимо указать module.variable_map для перевода из простых имен переменных, созданных путем запуска build_model_body(), в имена переменных, созданные путем создания экземпляра модуля., живи в объеме module/state.

...