2017-08-10 16 views
4

最近、テンソルフローを使用し始め、一部のシミュレートされたデータで線形回帰モデルを試しました。私は次のコードを持っていますとb(これはnumpyを使ってランダムに初期化します)をGradientDescentOptimizerでトレーニングしています。モデルが訓練を終えた後、これらの変数を見て、それらが実際の値にどれほど近いかを見たいと思います。 (私は質問に無関係なので、コードの他の部分は省略しています)。セッションがwith tf.Session()...を終了すると、私はsess = tf.Session()を使用してデフォルトのセッションを開き、sess.run(w)を使用しようとしましたが、私はAttempting to use uninitialized value train_weightsと挨拶しています。それは期待される。だから私はsess.run(tf.global_variables_initializer())を使用することを考えましたが、単にwの値を最初に初期化します。そこで質問がある - それはtensorflowセッションで変更された後にどのように私は、セッションがすでにセッションを閉じた場合は、方法はありませんTensorflow:セッションを閉じた後で訓練された変数にアクセスする

_ = tf.global_variables_initializer() 

with tf.Session() as sess: 
    sess.run(_) 
    for epoch in range(n_epochs): 
     for batch_pos in range(num_batches): 
      x_batch = X[batch_ind[batch_pos]:batch_ind[batch_pos+1]] 
      y_batch = Y[batch_ind[batch_pos]:batch_ind[batch_pos+1]] 
      sess.run(optimizer, feed_dict = {x_train_batch: x_batch,\ 
        y_train_batch: y_batch}) 
      cost_ = sess.run(cost, feed_dict = {x_train_batch: x_batch,\ 
        y_train_batch: y_batch}) 
     if (epoch)%display_rate == 0: 
      print('Epoch:', epoch+1, 'Cost: ', cost_) 

sess = tf.Session() 
# sess.run(tf.global_variables_initializer()) 
sess.run(w) 

答えて

3

を閉じられていることを与えられた変数の最終値にアクセスしますそこから重みを得る。一般的に

2つの方法があります。

1))は、SESのよう(tf.Session(と建設を使用していない)セッションを閉じないでください。

sess = tf.Session() 
saver = tf.train.Saver() 
saver.restore(sess, 'filename.chkp') 

saver = tf.train.Saver() 
saver.save(sess, 'filename.chkp') 

は、その後、あなたがモデルにもアクセスできるようになります:

2)セッションの終了時セーバーを使用します

関連する問題