2017-09-19 19 views
2

私は自分のデータセットに畳み込みニューラルネットワークを構築しようとしています。私の訓練データセットは、それぞれ800個の特徴の1209例を持っています。ここで1D kerasの畳み込みネットワーク、入力サイズの誤差

は、コードの一部は次のようになります。

model = Sequential() 
model.add(Conv1D(64, 3, activation='linear', input_shape=(1209, 800))) 
model.add(GlobalMaxPooling1D()) 
model.add(Dense(1, activation='linear')) 
model.compile(loss=loss_type, optimizer=optimizer_type, metrics=[metrics_type]) 
model.fit(X, Y, validation_data=(X2,Y2),epochs = nb_epochs, 
batch_size = batch_size,shuffle=True) 

私はこのコードをコンパイルすると、私は次のエラーを取得する:

Error when checking input: expected conv1d_25_input to have 3 dimensions, 
but got array with shape (1209, 800) 

は、だから私は次元を追加し、ここで私は何をすべきかです:

X = np.expand_dims(X, axis=0) 
X2 = np.expand_dims(X2, axis=0) 

そして、私はこのエラーを取得する:

ValueError: Input arrays should have the same number of samples as target arrays. 
Found 1 input samples and 1209 target samples. 

私のトレーニングデータは、今のところこのような形になっています(1,1209,800)。

お読みいただきありがとうございます。

+0

あなたの 'Y.shape'とは何ですか? –

+0

@MarcinMożejkoそれは(1209,1)のように、私はデータセットに1209の例があり、出力はそれぞれ1つしかありません。私は Y = np.expand_dims(Y軸= 0) Y2 = np.expand_dims(Y2、軸= 0) でそれを変更しようとしたが、それは@blackHoleDetectorに答えるための悲しげ –

答えて

0

Xの軸を0に拡張する代わりに、軸2を拡張する必要があります。X = np.expand_dims(X, axis=0)ではなく、X = np.expand_dims(X, axis=2)が必要です。

その後、Xの形状は(1209,800,1)である必要があります。したがって、最初のレイヤーにinput_shape=(800, 1)を指定する必要があります。

+0

おかげで助けにはなりませんでした。 このinput_shapeを指定すると、次のエラーが発生します。 ValueError:入力0はレイヤーconv1d_27と互換性がありません。予想されるndim = 3、found ndim = 2 –

+0

@VincentBrisseありがとうございます。私はちょうど私の答えを更新した。試してみます。私はこれがあなたを働かせると信じています。 – blackHoleDetector

+0

それはあなたに素晴らしい人間を働かせました!どうもありがとうございます。 –

関連する問題