2017-07-04 36 views
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=Truetf.layers.dense()它導致我無法訓練圖(給出了同樣的ValueError異常同上,但要求設置reuse=None)。

我猜測它與會話中仍然存在的圖形有關,所以當我嘗試恢復它時,它會檢測到重複的圖形。不過,我認爲這不應該發生,因爲會議已經結束。

鏈接全部代碼:gistlink

回答

1

我認爲你是加載在同一圖表中的變量。爲了測試,請嘗試創建一個新圖並加載它。做這樣的事情:

loaded_graph = tf.Graph() 
with tf.Session(graph=loaded_graph) as sess: 
    # Load the graph with the trained states 
+0

你的意思是修改我的預測()像這樣? – Bosen

+0

'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

+0

是的,你是對的。 –

相關問題