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

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

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

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

Q&A

解決済

1回答

2117閲覧

convolve1DおよびGRUの組み合わたNNmodelにおけるinput_shapeの設定について

yohehe

総合スコア48

Python

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

0グッド

1クリップ

投稿2018/11/07 10:41

RNNのGRUとconvolve1Dの組み合わせの手法があるということを知りましてそれをテストしたいと考え、プログラムの作成を行っているのですが、
input_shapeのエラーが出てしまい、エラーの内容が理解できず対応できず進まないでおります。

python

1#train,testデータに分類 2 3from sklearn.model_selection import train_test_split 4(train_X, test_X, train_y, test_y) = train_test_split(X, y,test_size=0.3,shuffle=True) 5 6#特徴量、ターゲットデータのshapeは以下になっています。 7#train_X (7324, 1, 360) 8#train_y (7324,) 9#test_X (3139, 1, 360) 10#test_y (3139,) 11 12import keras 13from keras.models import Sequential 14from keras.layers import GRU,LSTM, Dense, Activation, Dropout,Conv1D,Conv2D,MaxPooling1D,Flatten 15from keras import regularizers 16from keras.layers.convolutional_recurrent import ConvLSTM2D 17from keras import layers 18from keras.layers import normalization 19 20#ターゲットデータをone-hot表現に設定 21from keras.utils import np_utils 22train_y=np_utils.to_categorical(train_y) 23test_y=np_utils.to_categorical(test_y) 24#ラベル分類で4分類を設定しております。 25 26 27#convolve1D+RNN(GRU)の組み合わせのmodelを設定 28#畳み込みの層の数値は 29model=Sequential() 30 31model.add(Conv1D(32,5,activation="relu",input_shape=(1,360))) 32model.add(MaxPooling1D(3,padding="same")) 33model.add(Conv1D(32,5,activation="relu")) 34model.add(GRU(32,dropout=0.2,recurrent_dropout=0.5)) 35model.add(Dense(4,activation="softmax")) 36 37#model summaryはエラーで表示できない 38model.summary() 39 40model.compile(optimizer="RMSprop",loss="mae") 41 42#epochsを設定 43epochs=30 44history=model.fit(train_X, train_y, 45 batch_size=n_samples, 46 epochs=epochs, 47 validation_data=(test_X,test_y), 48 shuffle="True") 49 50 51コード

上記の特徴量、サンプルデータの設定で様々ためしているのですが、以下のエラーが表示されます。

[以下エラー内容]

Negative dimension size caused by subtracting 5 from 1 for 'conv1d_34/convolution/Conv2D' (op: 'Conv2D') with input shapes: [?,1,1,360], [1,5,360,32].

[他に試していること]
他にも input_shapeを(360,)や(1,1,360)などに設定するように特徴量から設定し直してもdimensionのエラー適切ではないと表示されています。

固定長ベクトルでの学習を行っているため、Embedding層などの導入はしておりません。

convolve1DからGRU層への以降の際へのdimensionのエラーだとは思われるのですが、

この場合のinput_shapeのdimensionは(n_samples,1,n_features)や(n_samples,n_features)でこの場合は不適切でしょうか。

なにかアドバイスをいただけますと幸いです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

意図したものになるかわかりませんが、Xの後ろの2つの次元を入れ替えると走るはずです。

投稿2018/11/07 11:19

mkgrei

総合スコア8560

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

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

yohehe

2018/11/07 11:39

mkgrei様、ありがとうございます。 特徴量の次元を入れ替えたらmodel.fitまで動作し始めました。この意味について勉強してみます。
yohehe

2018/11/07 16:09

参考サイトの情報ありがとうございます。convolveにおけるinput_shapeの設定について何度やってもうまくいかず色々試していたのですが、疑問がとけました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問