预期密集有形状但有形状的阵列
expected dense to have shape but got array with shape
当 运行 keras 中的文本分类模型时调用 model.predict 函数时出现以下错误。我到处搜索,但它不适合我。
ValueError: Error when checking input: expected dense_1_input to have shape (100,) but got array with shape (1,)
我的数据有 5 个 类,总共只有 15 个例子。下面是数据集
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
这是我模型的代码
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)
我无法弄清楚问题出在哪里以及如何解决它。
将predictions = model.predict(x_data)
改为predictions = model.predict(x_data[0:1])
你的 NN 中的输入层有 100 个神经元,但你的输入似乎只有 (1,) 的形状,因此你需要更改输入形状
x_data
是形状为 (15, 100)
的二维数组
print(x_data.shape)
但 x_data[0]
是形状为 (100, )
的一维数组
print(x_data[0].shape)
这会带来问题。
使用切片 x_data[0:1]
将其作为二维数组,形状为 (1, 100)
print(x_data[0:1].shape)
它会起作用
predictions = model.predict(x_data[0:1])
当 运行 keras 中的文本分类模型时调用 model.predict 函数时出现以下错误。我到处搜索,但它不适合我。
ValueError: Error when checking input: expected dense_1_input to have shape (100,) but got array with shape (1,)
我的数据有 5 个 类,总共只有 15 个例子。下面是数据集
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
这是我模型的代码
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)
我无法弄清楚问题出在哪里以及如何解决它。
将predictions = model.predict(x_data)
改为predictions = model.predict(x_data[0:1])
你的 NN 中的输入层有 100 个神经元,但你的输入似乎只有 (1,) 的形状,因此你需要更改输入形状
x_data
是形状为 (15, 100)
print(x_data.shape)
但 x_data[0]
是形状为 (100, )
print(x_data[0].shape)
这会带来问题。
使用切片 x_data[0:1]
将其作为二维数组,形状为 (1, 100)
print(x_data[0:1].shape)
它会起作用
predictions = model.predict(x_data[0:1])