2017-05-09 7 views
4

Ich versuche, eine Sentiment-Analyse in Python mit Keras durchzuführen. Dazu muss ich meine Texte einbetten. Das Problem erscheint, wenn ich versuche, um die Daten zu meinem Modell zu passen:Pandas DataFrame und Keras

model_1 = Sequential() 
model_1.add(Embedding(1000,32, input_length = X_train.shape[0])) 
model_1.add(Flatten()) 
model_1.add(Dense(250, activation='relu')) 
model_1.add(Dense(1, activation='sigmoid')) 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

Die Form meines Zuges Daten

(4834,) 

Und ist ein Pandas Serie Objekt. Wenn ich versuche, mein Modell zu passen und es mit einigen anderen Daten zu validieren bekomme ich diesen Fehler:

model_1.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=2, batch_size=64, verbose=2) 

ValueError: Error when checking model input: expected embedding_1_input to have shape (None, 4834) but got array with shape (4834, 1)

Wie kann ich meine Daten neu zu gestalten, um es für Keras geeignet zu machen? Ich habe mit np.reshape versucht, aber ich kann keine Elemente mit dieser Funktion platzieren.

Vielen Dank im Voraus

Antwort

4

None ist die Anzahl der erwarteten Zeilen, die deshalb in der Ausbildung geht man nicht definieren kann. Auch Keras benötigt ein numpliges Array als Eingabe und kein Pandas-Dataframe. Konvertieren Sie zuerst das df in ein numpy Array mit df.values und dann tun Sie np.reshape((-1, 4834)). Beachten Sie, dass Sie np.float32 verwenden sollten. Dies ist wichtig, wenn Sie es auf GPU trainieren.