2017-10-09 21 views
2

je crée modèle tensorflow et l'une des dernières lignes, il esttensorflow - attribuer un nom à optimiseur pour la future restauration

import tensorflow as tf 
... 
train_step = tf.train.AdagradOptimizer(LEARNING_RATE).minimize(some_loss_function) 

Je me demande si je peux donner ce tenseur/opération un nom, de sorte que je peut le restaurer par son nom après l'enregistrement sur le disque?

Sinon, si je ne peux pas lui donner un nom, comment puis-je trouver en sortie de la commande suivante:

tf.get_default_graph().get_operations() 

Répondre

2

Selon the docs for tf.train.Optimizer oui, oui vous pouvez.

train_step = tf.train.AdamOptimizer().minimize(loss, name='my_training_step') 

Vous pouvez ensuite restaurer l'op plus tard avec:

saver = tf.train.Saver(...) 
sess = tf.Session() 
saver.restore(sess, 'path/to/model') 
train_op = sess.graph.get_operation_by_name('my_training_step') 

Vous pouvez également enregistrer l'opération de formation dans une collection et restaurer par importing the meta graph. Ajout d'une collection et l'enregistrement ressemble à:

saver = tf.train.Saver(...) 
tf.add_to_collection('train_step', train_step) 
# ... 
with tf.Session() as sess: 
    # ... 
    sess.save(sess, ...) 

et restaurer ressemble:

new_saver = tf.train.import_meta_graph('path/to/metagraph') 
new_saver.restore(sess, 'path/to/model') 
train_op = tf.get_collection('train_step')[0] # restore the op 
+0

Merci beaucoup pour vous la réponse. Juste par curiosité. Est-il possible de trouver cette opération en sortie de 'tf.get_default_graph(). Get_operations()', au cas où je ne l'aurais pas nommé lors du processus de sauvegarde? – user1700890

+1

Je pense qu'il devrait être là, mais les noms peuvent être une douleur à analyser. Je ne sais pas à quoi cela ressemblerait dans ce cas, désolé. – Engineero

+1

Oh, vous pouvez trouver le nom en inspectant le graphique dans tensorboard, à condition que vous avez enregistré le graphique à un moment donné avec 'tf.train.Saver'. – Engineero