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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1980閲覧

UnboundLocalError: local variable 'batch_index' referenced before assignment

aiai8976

総合スコア112

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/16 03:31

前提・実現したいこと

LSTMで予測を行なっているのですが、学習時に以下のようなエラーが発生しています。
調べてみたところ、python特有のグローバル変数とローカル変数の扱い方が出てくるのですが、今回の'batch_index'に関してはコードに記述していません。
わかる方がいましたらコメントお願いします。

発生している問題・エラーメッセージ

Epoch 1/100 Traceback (most recent call last): File "forcast_snowcover_new.py", line 129, in <module> validation_data=(data4, target4) File "/Users/.local/share/virtualenvs/shuron-TfWa52ME/lib/python3.6/site-packages/keras/engine/training.py", line 1239, in fit validation_freq=validation_freq) File "/Users/.local/share/virtualenvs/shuron-TfWa52ME/lib/python3.6/site-packages/keras/engine/training_arrays.py", line 205, in fit_loop if batch_index == len(batches) - 1: # Last batch. UnboundLocalError: local variable 'batch_index' referenced before assignment

該当のソースコード

from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.layers.recurrent import LSTM from keras.optimizers import Adam from keras.callbacks import EarlyStopping from sklearn.model_selection import train_test_split import numpy as np import matplotlib.pyplot as plt import pandas as pd from sklearn.preprocessing import MinMaxScaler # CSVファイルの読み込み df1 = pd.read_csv('../split_data_2014_2015.csv') //省略 # 欠損値の穴埋め df1 = df1.fillna(method='ffill') df1 = df1["A"] # データの標準化 scaler = MinMaxScaler() df1 = np.array(scaler.fit_transform(np.array(df1).reshape(-1, 1))).reshape(1, -1) # データの生成 data1 = [] target1 = [] # 過去遡る日数 max_len = 15 # 将来予測する日数 future = 1 # 入力データは一列 n_in = 1 # 出力データは予測値一つ n_out = 1 # LSTMでのデータ構造に変更 for i in range(len(df1) - max_len): data1.append(df1[i:i + max_len]) target1.append(df1[i + max_len]) # LSTMで使用する形に整形 data1 = np.array(data1).reshape(len(data1), max_len, n_in) target1 = np.array(target1).reshape(len(target1), n_out) # 隠れ層 n_hidden = 100 length_of_sequence = 15 in_out_neurons = 1 epoch = 100 # モデルの設定 model = Sequential() model.add( LSTM( n_hidden, batch_input_shape=(None, length_of_sequence, in_out_neurons), return_sequences=False ) ) model.add(Dense(in_out_neurons)) model.add(Activation("linear")) optimizer = Adam(lr=0.001) model.compile(loss="mean_squared_error", optimizer=optimizer) # 学習 early_stopping = EarlyStopping(monitor='val_loss', mode='auto', patience=10) history = model.fit( data1, target1, batch_size=32, epochs=epoch, validation_data=(data4, target4) ) # 予測 test_predict = model.predict(data5) print(model.evaluate(data5, target5)) plt.figure() plt.plot( range(length_of_sequence, len(test_predict) + length_of_sequence), test_predict, color="r", label="predict_data" ) plt.plot(range(0, len(target5)), target5, color="b", label="row_data") plt.legend() plt.show()

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問