2017-07-26 32 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您没有做出适当的更改,请再次阅读我的答案。 –

相关问题