У меня следующая ситуация:
-
У меня есть две модели, написанные в двух отдельных сценариях:
-
Модель 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, которые неинициализированы?
Я пытаюсь написать код для проверки этого сейчас, но мне бы хотелось увидеть канонический подход к этой проблеме, потому что это часто встречается при попытке повторно использовать некоторые предварительно подготовленные веса.
Спасибо!