python - Keras TLSTM ext 分类不同的训练和测试形状
问题描述
我正在研究一个文本分类问题,其中我将 GloVe 嵌入输入到 LSTM 网络中。我已经对文本进行了预处理并执行了以下操作:
max_features = 300
tokenizer = Tokenizer(num_words=max_features, split=' ')
tokenizer.fit_on_texts(train['text'].values)
train_f = tokenizer.texts_to_sequences(train['text'].values)
word_index = tokenizer.word_index #used for word embeddings
train_f = pad_sequences(train_f)
train_f 的形状为:(25000, 1225)。然后我在测试集上执行了相同的操作:
max_features = 300
tokenizer = Tokenizer(num_words=max_features, split=' ')
tokenizer.fit_on_texts(test['text'].values)
test_f = tokenizer.texts_to_sequences(test['text'].values)
test_f = pad_sequences(test_f)
这导致测试形状为:(25000, 1223)。当继续加载嵌入并适应网络时。当我收到错误时,我无法预测测试集:
ValueError: Error when checking input: expected embedding_2_input to have shape (1225,) but got array with shape (1223,)
我似乎无法发现我的错误。任何帮助将非常感激!
解决方案
我认为您的测试集代码有错误:
tokenizer.fit_on_texts(test['text'].values)
test_f = tokenizer.texts_to_sequences(train['text'].values)
应该 :
tokenizer.fit_on_texts(test['text'].values)
test_f = tokenizer.texts_to_sequences(test['text'].values)
编辑
看起来你只是在标记之前没有相同的测试和训练形状。
检查你的形状test['text']
和train['text']
推荐阅读
- android - 第一个和最后一个标签仅使用 MpchartAndroid Libary for Barchart 在 android 中显示
- html - 如何在Django中的每个页面上显示单独的标题
- java - 多模块Maven项目中的ClassNotFoundException
- javascript - 使用 highchart 导出服务器生成空白图像
- html - 使用修复布局创建 HTML 和 css 视图
- python - 有没有办法使用 python 解析 XML 中的所有子值并返回找到的值的标签名称?
- svg - Threejs - 仅在部分网格中渲染图像纹理的最佳方法
- python - 如何使用 matplotlib.pyplot 增加分组条形图中的条形宽度而不减少组之间的间隙?
- android - 使视图顶部位于其他视图 ConstraintLayout 的末尾之前
- java - 如何将文件列表作为多个请求发送到后端 Android Retrofit