Я пытаюсь выяснить, как импортировать извлеченную сохраненную модель как часть более крупной модели.Tensorflow: перенос переменных по графикам
Чтобы быть конкретным, у меня есть RNN и некоторые матрицы внедрения (модель A), которые были обучены большому набору данных, хранящемуся в файле .ckpt
. У меня также есть другая модель (модель B), которая использует эту ту же самую RNN и модель внедрения в качестве подмодели, с дополнительными операциями для управления выходом этого RNN и использования его для классификации.
Графические определения для этих двух моделей различны, но я хотел бы инициализировать модель B сохраненной версией модели A. Как это можно сделать?
Моя попытка заключается в том, чтобы попытаться загрузить модель A в качестве другой модели под другой сеанс и график, а затем присвоить соответствующие матрицы в модели B тем, кто из A, но это не работает.
Вот соответствующая часть кода:
sup = supervised() # spins up a class with an interactive session inside and sets up the graph
g = tf.Graph()
with g.as_default():
unsup = unsupervised('unsup.ckpt') # loads in model A from file
# w/ another session (not interactive)
# get matrix from unsup and assign to sup
sup._word_embeddings.assign(unsup.session.run(unsup._word_embeddings))
# do the same for the RNN
sup._gate_matrix.assign(unsup.session.run(unsup._gate_matrix))
sup._gate_bias.assign(unsup.session.run(unsup._gate_bias))
sup._cand_matrix.assign(unsup.session.run(unsup._cand_matrix))
sup._cand_bias.assign(unsup.session.run(unsup._cand_bias))
Обратите внимание, что обе модели имеют явные переменные, присвоенные матриц из rnn_cell.linear
для RNN с помощью tf.get_variable()
при инстанцировании класса.
Заранее благодарен!
Привет, Не могли бы вы поделиться своим решением? Спасибо – Sentient07
Извините, у меня больше нет кода для этого. В основном все эти присваиваемые операторы являются символьными операциями, определенными на 'g', поэтому для их запуска вам нужно запустить' g' в 'session.run'. Надеюсь это поможет. – Taaam
То, что я намереваюсь сделать, это восстановить весы для двух разных моделей (которые я рассматриваю как два разных графика), тогда я хочу, чтобы первый вход был входом второго графика. – Sentient07