2017-07-26 31 views
1

我想用一個卷積神經網絡訓練我的數據,我已經重塑了我的數據: ,我已經使用這些都是參數:ValueError:檢查輸入時出錯:期望的conv1d_1_input具有3個維度,但獲得具有形狀的數組(500000,3253)?

'x_train.shape'=(500000, 3253) 
'y_train.shape', (500000,) 
'y_test.shape', (20000,) 
'y_train[0]', 97 
'y_test[0]', 99 
'y_train.shape', (500000, 256) 
'y_test.shape', (20000, 256) 

這是我如何定義我的模型架構:

# 3. Define model architecture 

model = Sequential() 

model.add(Conv1D(64, 8, strides=1, padding='valid', 
         dilation_rate=1, activation=None, use_bias=True, kernel_initializer='glorot_uniform', 
         bias_initializer='zeros', kernel_regularizer=None, bias_regularizer=None, 
         activity_regularizer=None, kernel_constraint=None, bias_constraint=None, input_shape=x_train.shape))   
print('***DONE***') 
###### input_traces=N_Features 
###### input_shape=(batch_size, trace_lenght,num_of_channels)   
model.add(MaxPooling1D(pool_size=2,strides=None, padding='valid',input_shape=x_train.shape)) 
print('***DONE***') 
model.add(Flatten()) 
print('***DONE***') 
model.add(Dropout(0.5)) 
print('***DONE***') 
#print(model.summary()) 
model.add(Dense(1, activation='relu')) 
print('***DONE***') 

# # # 4. Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

# # # # # 5. Fit model on training data 
model.fit(x_train, y_train, batch_size=100, epochs=500,verbose=2) 

結果是:

........ 
***DONE*** 
***DONE*** 
Traceback (most recent call last): 
    File "CNN_Based_Attack.py", line 128, in <module> 
    model.fit(x_train, y_train, batch_size=100, epochs=500,verbose=2) 
    File "/home/meriem/.local/lib/python2.7/site-packages/keras/models.py", line 853, in fit 
    initial_epoch=initial_epoch) 
    File "/home/meriem/.local/lib/python2.7/site-packages/keras/engine/training.py", line 1424, in fit 
    batch_size=batch_size) 
    File "/home/meriem/.local/lib/python2.7/site-packages/keras/engine/training.py", line 1300, in _standardize_user_data 
    exception_prefix='input') 
    File "/home/meriem/.local/lib/python2.7/site-packages/keras/engine/training.py", line 127, in _standardize_input_data 
    str(array.shape)) 
ValueError: Error when checking input: expected conv1d_1_input to have 3 dimensions, but got array with shape (500000, 3253) 

我已經是重塑我的數據和步驟5中的錯誤:

# # # # # 5. Fit model on training data 
    model.fit(x_train, y_train, batch_size=100, epochs=500,verbose=2) 

如何解決此問題?

回答

2

輸入形狀是錯誤的,對於Theano應該是input_shape =(1,353),對於TensorFlow應該是(3253,1)。輸入形狀不包括樣本數量。

然後,你需要重塑你的數據,包括通道軸:

x_train = x_train.reshape((500000, 1, 3253)) 

或移動通道尺寸到最後,如果你使用TensorFlow。這些變化後,它應該工作。

+0

V,非常感謝你的回答,添加這行代碼後,它給了我這個錯誤:ValueError:檢查輸入時出錯:期望的conv1d_1_input有形狀(無,500000,3253),但有陣列形狀(500000,3253,1) – tierrytestu

+0

我正在使用keras。 – tierrytestu

+0

@tierrytestu您沒有做出適當的更改,請再次閱讀我的答案。 –

相關問題