ハイパーパラメータを変えながらfor文を回してRNNを実行すすることで最適な値を探索したいです
PythonとTensorflowを使った機械学習とプログラミングの勉強を始めたばかりです。
インターネットの記事を参考にしながらRNNの実装を行いました。参考にした記事は
https://deepinsider.jp/tutor/introtensorflow/buildrnn
です。
さらに自分の勉強のためにノードの数やミニバッチのサイズなどを変えながらよりよい学習ができるパラメータを探そうと思いました。
発生している問題・エラーメッセージ
for文を使ってパラメータを変えながらRNNを複数回やってみたのですが、下のようなエラーメッセージが出てしまいました。
ValueError: Variable rnn/basic_rnn_cell/kernel already exists, disallowed. Did you mean to set reuse=True or reuse=tf.AUTO_REUSE in VarScope?
該当のソースコード
全部載せると長くなるのでforループの部分です。他の部分は上記の記事にすべて載っています。
Python
1for k in range(5): 2 # RNNセルの作成 3 cell = tf.nn.rnn_cell.BasicRNNCell((k+1)*20) 4 initial_state = cell.zero_state(tf.shape(x)[0], dtype=tf.float32) 5 outputs, last_state = tf.nn.dynamic_rnn(cell, x, initial_state=initial_state, dtype=tf.float32) 6 7 # 全結合 8 # 重み 9 w = tf.Variable(tf.zeros([(k+1)*20, FEATURE_COUNT])) 10 # バイアス 11 b = tf.Variable([0.1] * FEATURE_COUNT) 12 # 最終出力(予測) 13 prediction = tf.matmul(last_state, w) + b 14 15 # 損失関数(平均絶対誤差:MAE)と最適化(Adam) 16 loss = tf.reduce_mean(tf.map_fn(tf.abs, y - prediction)) 17 optimizer = tf.train.AdamOptimizer().minimize(loss) 18 19 # バッチサイズ 20 BATCH_SIZE = 16 21 # 学習回数 22 NUM_TRAIN = 10_000 23 # 学習中の出力頻度 24 OUTPUT_BY = 500 25 26 # 標準化 27 train_mean = train_dataset.mean() 28 train_std = train_dataset.std() 29 standardized_train_dataset = train_dataset.standardize() 30 31 # 学習の実行 32 sess.run(tf.global_variables_initializer()) 33 for i in range(NUM_TRAIN): 34 batch = standardized_train_dataset.next_batch(SERIES_LENGTH, BATCH_SIZE) 35 mae, _ = sess.run([loss, optimizer], feed_dict={x: batch[0], y: batch[1]}) 36 if i % OUTPUT_BY == 0: 37 print('step {:d}, error {:.2f}'.format(i, mae))
試したこと
インターネットで調べたところ
tf.reset_default_graph()
をループの頭に付け加えると解決するかもとの情報を得たのでやってみたのですが、
今度は
RuntimeError: The Session graph is empty. Add operations to the graph before calling run().
というエラーになってしまいました。
補足情報(FW/ツールのバージョンなど)

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。