2017-07-26 2 views
1

Ich möchte, dass meine Daten mit einer Faltung neuronales Netz trainieren, habe ich meine Daten neu gestaltet: Diese Parameter sind, die ich verwendet habe:ValueError: Fehler beim Überprüfen der Eingabe: erwartet, dass conv1d_1_input 3 Dimensionen hat, aber Array mit Shape (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) 

Dies ist, wie ich meine Modellarchitektur definieren:

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

Das Ergebnis ist:

........ 
***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) 

Der Fehler, ich habe, ist meine Daten bei der Neugestaltung und in Schritt 5:

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

Wie behebe ich dieses Problem?

Antwort

2

Die Eingangsform falsch ist, sollte es input_shape = (1, 3253) für Theano oder (3253, 1) für TensorFlow werden. Die Eingabeform enthält nicht die Anzahl der Samples.

Dann müssen Sie Ihre Daten neu zu gestalten, um die Kanäle Achse sind:

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

Oder die Kanäle Dimension bis zum Ende bewegen, wenn Sie TensorFlow verwenden. Nach diesen Änderungen sollte es funktionieren.

+0

V, vielen Dank für Ihre Antwort, nachdem diese Codezeile hinzufügen, es mir diesen Fehler gibt: Valueerror: Fehler bei Eingangsprüfung: erwartete conv1d_1_input Form haben (None, 500000, 3253), aber bekam Array mit Form (500000, 3253, 1) – tierrytestu

+0

Ich benutze Keras. – tierrytestu

+0

@tierrytestu Sie haben nicht die richtigen Änderungen vorgenommen, bitte lesen Sie meine Antwort noch einmal. –

Verwandte Themen