I am getting the following error while calling the model.predict function when running a text classification model in keras. I searched the everywhere but it isn't working for me.
ValueError: Error when checking input: expected dense_1_input to have shape (100,) but got array with shape (1,)
My data has 5 classes and has a total of 15 examples only. Below is the dataset
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
This is the code of my model
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)
I am not able to figure out where the problem lies and how to fix it.
x_data
is 2-dimensional array with shape (15, 100)
print(x_data.shape)
but x_data[0]
is 1-dimensional array with shape (100, )
print(x_data[0].shape)
and it makes problem.
Use slicing x_data[0:1]
to get it as 2-dimensional array with shape (1, 100)
print(x_data[0:1].shape)
and it will work
predictions = model.predict(x_data[0:1])