首页 > 解决方案 > 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,)

我似乎无法发现我的错误。任何帮助将非常感激!

标签: pythontensorflowkeras

解决方案


我认为您的测试集代码有错误:

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']


推荐阅读