Ich versuche eine gespeicherte Variable in Tensorflow wiederherzustellen. Es scheint, als wäre es sehr, sehr kompliziert.Wie stelle ich eine gespeicherte Variable im Tensorflow wieder her?
Ich verwende den alexnet Umsetzung in http://www.cs.toronto.edu/~guerzhoy/tf_alexnet/
in einer Python-Datei, alexnet.py definiere ich die Variable
conv5W = tf.Variable(net_data["conv5"][0],name='conv5w')
Dann finetune ich das Modell und ich sehe, dass einige ihrer Werte sind geändert. Ich speichere die finetuned Modell durch Eingabe:
saver = tf.train.Saver()
saver.save(sess,"modelname.ckpt")
danach, habe ich eine neue ipython Konsole öffnen und auszuführen:
from alexnet import *
sess=tf.InteractiveSession()
new_saver = tf.train.import_meta_graph("modelname.ckpt.meta")
new_saver.restore(sess, "modelname.ckpt")
danach, wenn ich versuche, mit den Werten der Variablen abzurufen:
conv5W.eval(session=sess)
es ergibt:
FailedPreconditionError: Attempting to use uninitialized value conv5w
[[Node: conv5w/_98 = _Send[T=DT_FLOAT, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_4_conv5w", _device="/job:localhost/replica:0/task:0/gpu:0"](conv5w)]]
[[Node: conv5w/_99 = _Recv[_start_time=0, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_4_conv5w", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
auf der anderen Seite, wenn ich initialisieren Variable mit:
init = tf.initialize_all_variables()
sess.run([init]) ,
dieses Mal ist es die Anfangswerte in net_data["conv5"][0]
, nicht die finetuned diejenigen