J'obtiens l'erreur suivante lors de l'appel de la fonction model.predict lors de l'exécution d'un modèle de classification de texte en keras. J'ai cherché partout mais ça ne marche pas pour moi.
ValueError: Error when checking input: expected dense_1_input to have shape (100,) but got array with shape (1,)
Mes données ont 5 classes et ont un total de 15 exemples seulement. Voici l'ensemble de données
query tags
0 hi intro
1 how are you wellb
2 hello intro
3 what's up wellb
4 how's life wellb
5 bye gb
6 see you later gb
7 good bye gb
8 thanks gratitude
9 thank you gratitude
10 that's helpful gratitude
11 I am great revertfine
12 fine revertfine
13 I am fine revertfine
14 good revertfine
C'est le code de mon modèle
from keras.preprocessing.text import Tokenizer
from sklearn.preprocessing import LabelBinarizer
from keras.models import Sequential
import pandas as pd
from keras.layers import Dense, Activation
data = pd.read_csv('text_class.csv')
train_text = data['query']
train_labels = data['tags']
tokenize = Tokenizer(num_words=100)
tokenize.fit_on_texts(train_text)
x_data = tokenize.texts_to_matrix(train_text)
encoder = LabelBinarizer()
encoder.fit(train_labels)
y_data = encoder.transform(train_labels)
model = Sequential()
model.add(Dense(512, input_shape=(100,)))
model.add(Activation('relu'))
model.add(Dense(5))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
model.fit(x_data, y_data, batch_size=8, epochs=10)
predictions = model.predict(x_data[0])
tag_labels = encoder.classes_
predicted_tags = tag_labels[np.argmax(predictions)]
print (predicted_tags)
Je ne suis pas en mesure de comprendre où se situe le problème et comment le résoudre.
x_data
est un tableau bidimensionnel de forme (15, 100)
print(x_data.shape)
mais x_data[0]
est un tableau unidimensionnel de forme (100, )
print(x_data[0].shape)
et cela pose problème.
Utiliser le découpage x_data[0:1]
pour l'obtenir sous forme de tableau à deux dimensions avec la forme (1, 100)
print(x_data[0:1].shape)
et ça marchera
predictions = model.predict(x_data[0:1])
Remplacez predictions = model.predict(x_data)
par predictions = model.predict(x_data[0:1])
Votre couche d'entrée dans votre NN avait 100 neurones, mais il semble que votre entrée ait une forme de seulement (1,), vous devez donc changer la forme d'entrée