Восстановление модели тензорного потока - PullRequest
0 голосов
/ 03 мая 2018

Я хочу восстановить модель тензорного потока после обучения. Я знаю, что могу использовать tf.train.Saver, но проблема в восстановлении, потому что я путаюсь с именами для get_tensor_by_name. Кто-нибудь может мне помочь? Это мой график:

x_hat = tf.placeholder(tf.float32, shape=[None, dim_img], name='input_img')
x = tf.placeholder(tf.float32, shape=[None, dim_img], name='target_img')

# dropout
keep_prob = tf.placeholder(tf.float32, name='keep_prob')

# input for PMLR
z_in = tf.placeholder(tf.float32, shape=[None, dim_z], name='latent_variable')

# network architecture
y, z, loss, neg_marginal_likelihood, KL_divergence = vae.autoencoder(x_hat, x, dim_img, dim_z, n_hidden,
                                                                                keep_prob)

1 Ответ

0 голосов
/ 03 мая 2018

Когда вы сохраняете модель, вы сохраняете 2 вещи: 1) мета-граф, то есть представление графа (все символы TF, которые вы определили; и 2) контрольную точку, которая содержит фактические значения переменных (которые являются сохранено и восстановлено по имени).

При восстановлении вы можете восстановить один или оба этих компонента. То, что вы описываете, восстанавливает как мета-график, так и данные контрольной точки. В этом случае вам нужно искать различные операции и тензоры, которые вас интересуют, по имени, что может сбивать с толку (особенно, если вы не называли свои переменные правильно, что вы всегда должны делать).

# In this method you import the meta graph then restore
saver = tf.train.import_meta_graph('my-save-dir/my-model-10000.meta')
saver.restore(sess, 'my-save-dir/my-model-10000')

Другой вариант восстановления (который я предпочитаю mysefl) - вообще не загружать мета-граф. Вместо этого просто повторно запустите тот же код, который вы изначально использовали для создания графика (если вы все сделали хорошо, все будет организовано в одном месте). Тогда вы только восстановите контрольно-пропускной пункт. Преимущество этого подхода заключается в том, что вы можете легко хранить ссылки на все необходимые операции (например, стоимость, train_op, заполнители и т. Д.).

# This method only performs the restor operation 
# assuming the graph is already constructure
saver.restore(sess, 'my-save-dir/my-model-10000')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...