У меня следующая ситуация:
-
У меня есть две модели, написанные в двух отдельных сценариях:
-
Модель A состоит из переменных
a1,a2иa3и написана вA.py -
Модель B состоит из переменных
b1,b2иb3и написана на B.py
В каждом из A.py и B.py у меня есть tf.train.Saver, который сохраняет контрольную точку всех локальных переменных и позволяет вызвать файлы контрольной точки ckptA и ckptB соответственно.
Теперь я хочу создать модель C, которая использует a1 и b1. Я могу сделать так, чтобы одно и то же имя переменной для a1 использовалось как в A, так и в C с помощью var_scope (и то же самое для b1).
Вопрос в том, как я могу загрузить a1 и b1 из ckptA и ckptB в модель C? Например, будет ли работать следующее?
saver.restore(session, ckptA_location)
saver.restore(session, ckptB_location)
Будет ли возникать ошибка, если вы попытаетесь восстановить один и тот же сеанс дважды? Будет ли он жаловаться на отсутствие выделенных "слотов" для дополнительных переменных (b2, b3, a2, a3) или просто восстановить переменные, которые он может, и только жаловаться, если есть некоторые другие переменные в C, которые неинициализированы?
Я пытаюсь написать код для проверки этого сейчас, но мне бы хотелось увидеть канонический подход к этой проблеме, потому что это часто встречается при попытке повторно использовать некоторые предварительно подготовленные веса.
Спасибо!