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
是的,你是對的。 –