期望密集具有形状,但具有形状的阵列 [英] expected dense to have shape but got array with shape

查看:97
本文介绍了期望密集具有形状,但具有形状的阵列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在keras中运行文本分类模型时,调用model.predict函数时出现以下错误.我到处搜索了,但对我来说不起作用.

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

我的数据有5个类别,总共只有15个示例.下面是数据集

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

这是我模型的代码

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是形状为(15, 100)

  print(x_data.shape) 

但是x_data[0]是形状为(100, )

  print(x_data[0].shape) 

这会带来问题.

使用切片x_data[0:1]将其获取为形状为(1, 100)的二维数组

Use slicing x_data[0:1] to get it as 2-dimensional array with shape (1, 100)

 print(x_data[0:1].shape) 

它将起作用

 predictions = model.predict(x_data[0:1])

这篇关于期望密集具有形状,但具有形状的阵列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆