0
我目前遇到问题恢复此模型进行预测。为什么我不能恢复这个模型?
代码:
def neural_network(data):
with tf.name_scope("network"):
layer1 = tf.layers.dense(data, 1000, activation=tf.nn.relu, name="hidden_layer1")
layer2 = tf.layers.dense(layer1, 1000, activation=tf.nn.relu, name="hidden_layer2")
output = tf.layers.dense(layer2, 2, name="output_layer")
return output
def evaluate():
with tf.name_scope("loss"):
global x
xentropy = tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=neural_network(x))
loss = tf.reduce_mean(xentropy, name="loss")
with tf.name_scope("train"):
optimizer = tf.train.AdamOptimizer()
training_op = optimizer.minimize(loss)
with tf.name_scope("exec"):
with tf.Session() as sess:
for i in range(1, 10):
sess.run(tf.global_variables_initializer())
sess.run(training_op, feed_dict={x: np.array(train_data).reshape([-1, 1]), y: label})
print "Training " + str(i)
saver = tf.train.Saver()
saver.save(sess, "saved_models/testing")
print "Model Saved."
def predict():
with tf.name_scope("predict"):
output = neural_network(x)
output = tf.nn.softmax(output)
with tf.Session() as sess:
saver = tf.train.import_meta_graph("saved_models/testing.meta")
# saver = tf.train.Saver()
saver.restore(sess, "saved_models/testing")
print sess.run(output, feed_dict={x: np.array([12003]).reshape([-1, 1])})
我一直在使用tf.train.Saver()
恢复尝试,但也给出了同样的错误。
The error given is ValueError: Variable hidden_layer1/kernel already exists, disallowed. Did you mean to set reuse=True in VarScope? Originally defined at:
我已经尝试设置为reuse=True
但tf.layers.dense()
它导致我无法训练图(给出了同样的ValueError异常同上,但要求设置reuse=None
)。
我猜测它与会话中仍然存在的图形有关,所以当我尝试恢复它时,它会检测到重复的图形。不过,我认为这不应该发生,因为会议已经结束。
链接全部代码:gistlink
你的意思是修改我的预测()像这样? – Bosen
'DEF预测(): 与tf.name_scope( “预测”): 输出= neural_network(X) 输出= tf.nn.softmax(输出) loaded_graph = tf.Graph() 与TF。 Session(loaded_graph)as sess: saver = tf.train.import_meta_graph(“saved_models/testing.meta”) #saver = tf.train.Saver() saver.restore(sess,“saved_models/testing”) print sess.run(output,feed_dict = {x:np.array([12003])。reshape([ - 1,1])}) ' – Bosen
是的,你是对的。 –