🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Keras

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

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

Q&A

解決済

1回答

1708閲覧

[Python]Deeplearningでエラーが出て困ってます

Dpulex

総合スコア9

Keras

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

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

Python

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

0グッド

1クリップ

投稿2019/09/18 14:08

前提・実現したいこと

Pythonを用いてDeeplearningを行いたいです。
ログを用いて異常検知を行うことを目的に行なっているのですが、エラーが出て前に進めない状況です。
dataには列数が1106,行数が151186ある行列が入っています。
それをX_train, X_test, Y_train, Y_testに分けていきます。
これを実装するとうまくいかずエラーが出てしまう現状です

### 発生している問題・エラーメッセージ Traceback (most recent call last): File "lstm_tokutyou.py", line 73, in <module> callbacks=[early_stopping]) File "//anaconda3/lib/python3.7/site-packages/keras/engine/training.py", line 952, in fit batch_size=batch_size) File "//anaconda3/lib/python3.7/site-packages/keras/engine/training.py", line 751, in _standardize_user_data exception_prefix='input') File "//anaconda3/lib/python3.7/site-packages/keras/engine/training_utils.py", line 128, in standardize_input_data 'with shape ' + str(data_shape)) ValueError: Error when checking input: expected bidirectional_1_input to have 3 dimensions, but got array with shape (84664, 1105)V

該当のソースコード

python

1ソースコード 2import csv 3import re 4import datetime 5import time 6import numpy as np 7import matplotlib.pyplot as plt 8from keras.models import Sequential 9from keras.layers.core import Dense, Activation 10from keras.layers.recurrent import LSTM 11from keras.layers.wrappers import Bidirectional 12from keras.optimizers import Adam 13from keras.callbacks import EarlyStopping 14from sklearn import datasets 15from sklearn.model_selection import train_test_split 16from sklearn.utils import shuffle 17 18data = np.loadtxt("lstm_tokutyou1002.csv",delimiter=",") 19X = data[:,:1105] 20y = data[:,-1] 21Y = np.eye(2)[y.astype(int)] 22del y 23X_train, X_test, Y_train, Y_test = \ 24 train_test_split(X, Y, test_size=0.3) 25 26X_train, X_validation, Y_train, Y_validation = \ 27 train_test_split(X_train, Y_train, test_size=0.2) 28 29''' 30モデル設定 31''' 32n_in = 151186 33n_long = 1105 34n_hidden = 128 35n_out = 10 36 37 38def weight_variable(shape, name=None): 39 return np.random.normal(scale=.01, size=shape) 40 41 42early_stopping = EarlyStopping(monitor='val_loss', patience=10, verbose=1) 43 44model = Sequential() 45model.add(Bidirectional(LSTM(n_hidden), 46 input_shape=(n_long,n_in))) 47model.add(Dense(n_out, kernel_initializer=initializers.RandomNormal())) 48model.add(Activation('softmax')) 49 50model.compile(loss='categorical_crossentropy', 51 optimizer=Adam(lr=0.001, beta_1=0.9, beta_2=0.999), 52 metrics=['accuracy']) 53 54''' 55モデル学習 56''' 57epochs = 300 58batch_size = 250 59 60hist = model.fit(X_train, Y_train, 61 batch_size=batch_size, 62 epochs=epochs, 63 validation_data=(X_validation, Y_validation), 64 callbacks=[early_stopping]) 65 66''' 67学習の進み具合 68''' 69acc = hist.history['val_acc'] 70loss = hist.history['val_loss'] 71 72plt.rc('font', family='serif') 73fig = plt.figure() 74plt.plot(range(len(loss)), loss, 75 label='loss', color='black') 76plt.xlabel('epochs') 77plt.show() 78 79''' 80予測精度の評価 81''' 82loss_and_metrics = model.evaluate(X_test, Y_test) 83print(loss_and_metrics) 84

試したこと

ネットで調べてもいい回答が見つかりませんでした。

補足情報(FW/ツールのバージョンなど)

機種名: Mac mini
機種ID: Macmini7,1
プロセッサ名: Intel Core i7
プロセッサ速度: 3 GHz

absl-py 0.8.0
astor 0.8.0
chainer 5.1.0
cycler 0.10.0
filelock 3.0.10
gast 0.3.2
google-pasta 0.1.7
grpcio 1.23.0
h5py 2.10.0
Keras 2.3.0
Keras-Applications 1.0.8
Keras-Preprocessing 1.1.0
kiwisolver 1.1.0
Markdown 3.1.1
matplotlib 3.1.1
numpy 1.15.4
pandas 0.23.4
pip 19.1.1
protobuf 3.6.1
pyparsing 2.4.2
python-dateutil 2.7.5
pytz 2018.7
PyYAML 5.1.2
scikit-learn 0.20.1
scipy 1.1.0
setuptools 41.0.1
six 1.12.0
sklearn 0.0
tensorboard 1.14.0
tensorflow 1.14.0
tensorflow-estimator 1.14.0
termcolor 1.1.0
Werkzeug 0.15.6
wheel 0.33.4
wrapt 1.11.2

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

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

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

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

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

magichan

2019/09/19 01:55

列数が1106,行数が151186のデータというのは、『特徴量が1次元の時系列データ(ステップ数 1105+1) が 151186個(行)ある』ということでしょうか?
Dpulex

2019/09/19 02:20

はい、そうです。
guest

回答1

0

ベストアンサー

とりあえず、気がついた箇所を何点か。

1.
今回の入力データは『特徴量が1次元、ステップ数 1105の時系列データ』とのことなので、

Python

1n_in = 151186 2n_long = 1105 3# (略) 4model = Sequential() 5model.add(Bidirectional(LSTM(n_hidden), 6 input_shape=(n_long,n_in)))

での input_shape の値は (ステップ数, 特徴量の次元数)つまり (1105, 1)となる。
そのため n_in の値は

Python

1n_in = 1

にする必要がるのではないかと思います。

2.
現在、X のデータの形式は (151186, 1105) となっているが、上記で設定したinput_shape に合せて (151186, 1105, 1) とする必要があります。

Python

1X = data[:,:1105]

の箇所を

Python

1X = data[:,:1105].reshape(-1, 1105, 1)

に修正と良いかと思います。

3.
現在出力データは

Python

1Y = np.eye(2)[y.astype(int)]

となっており、2クラスとなっているが、モデルの出力は

Python

1n_out = 10 2# (略) 3model.add(Dense(n_out, kernel_initializer=initializers.RandomNormal())) 4model.add(Activation('softmax'))

と 10クラスとなっているので、この2つを合わせる必要がります。

とりあえず以上の修正でエラーはなくなるのではないでしょうか。

投稿2019/09/19 03:14

magichan

総合スコア15898

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

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

Dpulex

2019/09/19 04:05

ありがとうございます 参考にさせていただきました 進めるとこのようなエラーが出ました。 KeyError: 'val_acc' 'val_acc'が存在しないのでしょうか
magichan

2019/09/19 04:58

そのようなエラーが発生しているのであれば、'val_acc'が無いということなのでしょう。(理由はわかりませんが) とりあえず、 print(hist.history) にて historyデータを確認してみてください。
Dpulex

2019/09/20 05:21

確認したところ、accuracyで保存されていることがわかりました。 何から何までありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問