2017-07-04 6 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: 

私はtf.layers.dense()ためreuse=Trueを設定しようとしたが、それは私の中でグラフを訓練することができませんでし結果(上記はなくreuse=Noneを設定するように求めるのと同じとValueErrorを与えます)。

私はそれがセッションにまだ存在するグラフと関係があると推測しています。それを復元しようとすると、重複するグラフが検出されます。しかし、セッションが既に閉鎖されているので、これは起こらないと思っていました。コード全体へ

リンク:gistlink

答えて

1

私はあなたが同じグラフ内の変数をロードしていると思います。テストのために、新しいグラフを作成して読み込みます。

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

このように私のpredict()を変更することを意味しますか? TFと 出力= neural_network(X) 出力= tf.nn.softmax(出力) loaded_graph = tf.Graph() : – Bosen

+0

'DEF()を予測:tf.name_scopeと ( "予測")。セッション(loaded_graph)をsess: saver = tf.train.import_meta_graph( "saved_models/testing.meta") #saver = tf.train.Saver() saver.restore(セス、 "saved_models/testing") プリントsess.run(出力、feed_dict = {x:np.array([12003])。reshape([ - 1,1])) – Bosen

+0

はい、そうです。 –

関連する問題