2017-06-16 4 views
2

Ich versuche, mein Modell in Tensorflow wiederherzustellen. Dies ist, wie ich das Modell gespeichert:
Tensorflow-Wiederherstellungsmodell: Versuch, nicht initialisierten Wert zu verwenden

ae = autoencoder(input_shape=[None, height, width, depth], conv_strides=[[1, stride1, stride1, 1], [1, stride2, stride2, 1]], n_filters=[1, num_filters, num_filters], filter_sizes=[size_filter, size_filter, size_filter], corruption=False, poolsize=2) 

optimizer = tf.train.AdamOptimizer(learning_rate).minimize(ae['cost']) 

# create a session to use the graph 
init = tf.global_variables_initializer() 
saver = tf.train.Saver() 
with tf.Session() as sess: 
    sess.run(init) 
    # Network is trained here 
    ... 
    saver.save(sess, "model.ckpt") 

Dann versuche ich es wiederherstellen diesen Code verwenden (in einer anderen Datei, nach dem Modell der Ausbildung, so in einer separaten Sitzung):

with tf.Session() as sess: 
    saver = tf.train.import_meta_graph("model.ckpt.meta") 
    saver.restore(sess, "model.ckpt") 
    print("Model restored") 
    ae = autoencoder(input_shape=[None, height, width, depth], conv_strides=[[1, stride1, stride1, 1], [1, stride2, stride2, 1]], n_filters=[1, num_filters, num_filters], filter_sizes=[size_filter, size_filter, size_filter], corruption=False, poolsize=2) 
    # create stuff here to reconstruct images using the autoencoder 
    ... 
    recon = sess.run(ae['y'], feed_dict={ae['x']: batch}) 

Es zeigt an, dass das Modell wiederhergestellt wird, aber ich erhalte einen Fehler: FailedPreconditionError: Versuch, nicht initialisierten Wert zu verwenden
Laut der Tensorflow-Dokumentation müssen Sie die Variablen nach der Wiederherstellung nicht initialisieren, also denke ich, es geht nicht falsch dort. Kann jemand das beheben? Ich habe das Gefühl, dass ich etwas wirklich Dummes tue ...

Antwort

2

Try this:

ae = autoencoder(input_shape=[None, height, width, depth], conv_strides= 
[[1, stride1, stride1, 1], [1, stride2, stride2, 1]], n_filters=[1, num_filters, num_filters], filter_sizes=[size_filter, size_filter, size_filter], corruption=False, poolsize=2)  
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(ae['cost']) 

saver = tf.train.Saver() 

with tf.Session() as sess: 
    saver.restore(sess, "model.ckpt") 
    print("Model restored") 
    # create stuff here to reconstruct images using the autoencoder 
    ... 
    recon = sess.run(ae['y'], feed_dict={ae['x']: batch}) 
+0

klar zu sein, muss ich 'saver = tf.train.import_meta_graph (" model.ckpt zu verwenden. meta ")' um den Sparer zu erstellen? Weil das leider nicht funktioniert. – Kes

+0

Meine schlechte, siehe die modifizierte Version oben. – MZHm

+0

Kann mir jemand sagen, warum das funktioniert? – ycyoon

Verwandte Themen