tierrytestu
tierrytestu

Reputation: 119

ValueError: Error when checking input: expected conv1d_1_input to have shape (None, 500000, 3253) but got array with shape (500000, 3253, 1)

I want to train my data with a convolution neural network, I have reshaped my data: Those are parameters that I have used:

'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)

This is how I define my model architecture:

# 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))
# input_traces=N_Features   
# input_shape=(batch_size, trace_lenght,num_of_channels)            
model.add(MaxPooling1D(pool_size=2,strides=None, padding='valid'))
model.add(Flatten())
model.add(Dropout(0.5))
model.add(Dense(1, activation='relu'))

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())


model.fit(x_train, y_train, batch_size=100, epochs=500,verbose=2)

But i got two Errors : 1-

ValueError: Error when checking input: expected conv1d_1_input to have shape (None, 500000, 3253) but got array with shape (500000, 3253, 1)

2- With model.fit()

How do I resolve this problem?

Upvotes: 2

Views: 2929

Answers (2)

AEM
AEM

Reputation: 1386

input_shape = (3253, 1)

this must be Input_shape of first Convolution layer Conv1D

You got error with model.fit() Because you still don't build your model yet.

Upvotes: 0

Dr. Snoopy
Dr. Snoopy

Reputation: 56357

The input shape is wrong, it should be input_shape = (1, 3253) for Theano or (3253, 1) for TensorFlow. The input shape doesn't include the number of samples.

Then you need to reshape your data to include the channels axis:

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

Or move the channels dimension to the end if you use TensorFlow. After these changes it should work.

Upvotes: 3

Related Questions