Создать хаб-модуль из существующей контрольной точки
Можно ли создать hub
модуль из существующих контрольных точек без цепочки учебного кода?
1 ответ
Да, конечно. Вам нужен сеанс с (1) модулем и (2) правильными значениями в его переменных. Неважно, приходят ли они из реальной подготовки или просто восстановления контрольно-пропускного пункта. Имея библиотеку Python для построения моделей, которая ничего не знает о TensorFlow Hub, у вас может быть инструмент для экспорта в модуль Hub, который выглядит следующим образом:
import tensorflow_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
,