質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

Tensorflowの sess.runのエラー

Bonziri
Bonziri

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

4540閲覧

投稿2019/06/24 13:13

編集2022/01/12 10:58

ミニバッチ学習をTensorflowで書いていたところ,
sess.run(train_step, feed_dict = {X: batch_x, t: batch_t})

Attempted to use a closed Session.
というエラーがでました.
エラーの内容を調べてみましたが改善方法がわかりません.
よろしくお願いします.

エラーコード

RuntimeError Traceback (most recent call last) <ipython-input-106-037e1a6e1227> in <module> 10 batch_x = train_x[sff_idx[idx: idx + batch_size]] 11 batch_t = train_t[sff_idx[idx: idx + batch_size]] ---> 12 sess.run(train_step, feed_dict = {X: batch_x, t: batch_t}) 13 14 if epoch % 100 == 0: ~\Anaconda3\envs\cpu\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata) 948 try: 949 result = self._run(None, fetches, feed_dict, options_ptr, --> 950 run_metadata_ptr) 951 if run_metadata: 952 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) ~\Anaconda3\envs\cpu\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata) 1094 # Check session. 1095 if self._closed: -> 1096 raise RuntimeError('Attempted to use a closed Session.') 1097 if self.graph.version == 0: 1098 raise RuntimeError('The Session graph is empty. Add operations to the ' RuntimeError: Attempted to use a closed Session.

記述コード

入力層:60,隠れ層:60,出力層:1 のNNを作成しようとしています
入力データは(60,120)で60次元のデータを120個用意しており,内100個を学習データ,残り20個をテストデータにしています
出力データは(120,1)で1次元データを120個用意し,内100個を学習データ,残り20個をテストデータにしています
これらは,記述コードより前でcsvファイルから読み込み済みです
エラーが出ているのは最後の行のみです.

import numpy as np import tensorflow as tf import keras ##重み(特殊な正規分布から発生する値) def weight(shape = []): initial = tf.truncated_normal(shape, stddev = 0.01) return tf.Variable(initial) ##バイアス def bias(dtype = tf.float32, shape = []): initial = tf.zeros(shape, dtype = dtype) return tf.Variable(initial) ##損失関数(交叉エントロピー) def loss(t, f): cross_entropy = tf.reduce_mean(-tf.reduce_sum(t * tf.log(f))) return cross_entropy ##正確性の尺度 def accuracy(t, f): correct_prediction = tf.equal(tf.argmax(t, 1), tf.argmax(f, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) return accuracy Q = 60 P = 60 R = 1 sess = tf.InteractiveSession() X = tf.placeholder(dtype = tf.float32, shape = [None, Q]) t = tf.placeholder(dtype = tf.float32, shape = [None, R]) ##隠れ層 ##活性化関数はシグモイド関数 W1 = weight(shape = [Q, P]) b1 = bias(shape = [P]) f1 = tf.matmul(X, W1) + b1 sigm = tf.nn.sigmoid(f1) ##出力層 ##fはソフトマックス関数(出力を0~1に制限) W2 = weight(shape = [P, R]) b2 = bias(shape = [R]) f2 = tf.matmul(sigm, W2) + b2 f = tf.nn.softmax(f2) loss = loss(t, f) acc = accuracy(t, f) ##BP法 optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.95) train_step = optimizer.minimize(loss) ##Adam ##train_step = tf.train.AdamOptimizer().minimize(loss) ##学習を実行 with tf.Session() as sess: init_op = tf.global_variables_initializer() sess.run(init_op) ##学習データを習得 from sklearn.model_selection import train_test_split ##説明変数(入力特徴量) x = DataFrame(input_data) x2 = DataFrame(input_test_data) ##目的変数(評価データ) y = DataFrame(learning_output_data) y2 = DataFrame(learning_test_data) ##説明変数・目的変数をそれぞれ訓練データ・テストデータに分割 train_x = x test_x = x2 train_t = y test_t = y2 #データの整形 train_x = train_x.astype(np.float) test_x = test_x.astype(np.float) train_t = keras.utils.to_categorical(train_t) test_t = keras.utils.to_categorical(test_t) ##ミニバッチ学習 num_epoch = 10000 num_data = train_x.shape[0] batch_size = 10 for epoch in range(num_epoch): sff_idx = np.random.permutation(num_data) for idx in range(0, num_data, batch_size): batch_x = train_x[sff_idx[idx: idx + batch_size]] batch_t = train_t[sff_idx[idx: idx + batch_size]] sess.run(train_step, feed_dict = {X: batch_x, t: batch_t})

補足情報

jupyter notebook 使用

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。