Keras TLSTM ext分类不同的训练和测试形状

时间:2020-02-14 15:51:15

标签: python tensorflow keras

我正在研究一个文本分类问题,其中我将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,)

我似乎无法发现自己​​的错误。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

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

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']的形状