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

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

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

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

Python

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

Q&A

0回答

1483閲覧

KerasでRNNをしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Keras

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

Python

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

0グッド

0クリップ

投稿2019/06/06 06:58

編集2022/01/12 10:55

時系列データを予測するためにTensorFlowのRNNを用いた予測をしています。
しかしどう組んでも以下の図のように学習曲線が直線にしかなりません。色々な層を作って試しましたが一向に時系列の予測にならないので、NNについて知見のある方、ご指導お願いいたします。

イメージ説明

以下、コードになります。

python

1import pandas as pd 2import numpy as np 3 4from keras.models import Sequential 5from keras.optimizers import Adam 6from keras.callbacks import EarlyStopping 7from keras.layers import Dense 8from keras.layers.recurrent import LSTM 9 10import warnings 11warnings.filterwarnings('ignore') 12 13df = pd.read_csv('df.csv') 14 15def _load_data(data, n_prev = 3): 16 docX, docY = [], [] 17 for i in range(len(data)-n_prev): 18 docX.append(data.iloc[i:i+n_prev].as_matrix()) 19 docY.append(data.iloc[i+n_prev].as_matrix()) 20 alsX = np.array(docX) 21 alsY = np.array(docY) 22 return alsX, alsY 23 24def train_test_split(df, test_size=0.4, n_prev = 3): 25 ntrn = round(len(df) * (1 - test_size)) 26 ntrn = int(ntrn) 27 X_train, y_train = _load_data(df.iloc[0:ntrn], n_prev) 28 X_test, y_test = _load_data(df.iloc[ntrn:], n_prev) 29 return (X_train, y_train), (X_test, y_test) 30 31length_of_sequences = 3 32(X_train, y_train), (X_test, y_test) = train_test_split(df, n_prev =length_of_sequences) 33 34max_len = 3 35dim = 1 36input_shape=(max_len, dim) 37epochs = 20 38batch_size = 3 39 40model = Sequential() 41model.add(LSTM(units=128, input_shape=input_shape, return_sequences = True)) 42model.add(LSTM(units=128, input_shape=input_shape, return_sequences = True)) 43model.add(LSTM(units=128, input_shape=input_shape, return_sequences = True)) 44model.add(LSTM(units=128, input_shape=input_shape)) 45model.add(Dense(input_shape[1],activation="linear")) 46 47model.compile(loss="mse", optimizer=Adam(lr=10)) 48 49early_stopping = EarlyStopping(monitor='mse', patience=3) 50 51hist = model.fit( 52 X_train, 53 y_train, 54 batch_size=batch_size, 55 epochs=epochs, 56 callbacks=[early_stopping] 57)

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

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

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

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

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

Wind

2019/06/06 07:51

KerasもRNNもやったこと無いですが、ソースコードが学習で終わっていませんか? X_testはどこで使うのでしょう?
退会済みユーザー

退会済みユーザー

2019/06/06 08:06

この質問の背景として学習中のMAEが全く下がらないことに違和感を覚え、学習曲線をプロットしたところ全く学習できていなかったことがあります。 テスト分割は行なっていますが、正直それ以前のモデルを組み立てる段階でどこか誤りがあるのではないかと質問させていただきました。
Wind

2019/06/06 08:21

すいません。学習してもMAEが下がらない(上がることも無い)ってことでしたのですね。 勘違いしていました。
redp

2019/06/08 09:58

デフォルト値では1e-3のAdamの学習率が10となっていますが理由はありますか?
退会済みユーザー

退会済みユーザー

2019/06/08 10:36

デフォルトだとlossに微々たる変化しか現れず、予測にすらならないため、とりあえずデータセットに過学習させて学習データにフィットさせるために大きな値を入れています。
daesaka

2019/06/12 03:55

しかしlr=10は大きすぎると思います。
退会済みユーザー

退会済みユーザー

2019/06/12 05:59 編集

大きくしすぎて少しでも予測値の線が曲がればチューニングしようくらいの作戦でした。 「学習曲線を曲げるため」のとりあえずの値なのでそこまで気にしないでください。
daesaka

2019/06/12 06:26

大きすぎる故曲がっていないと思うので、デフォルト値と同程度のオーダーにした方が良いと思いますよ。
Wind

2019/06/14 07:43

lrが大きすぎると大外れになってしまうので、まずはデフォルト値でやってみるべきですよね。
amahara_waya

2019/06/16 00:53

状況再現のため、入力データであるdf.csvを提供してもらえるとありがたいのですが、できますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問