我正在研究一个文本分类问题,其中我将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,)
我似乎无法发现自己的错误。任何帮助将不胜感激!
答案 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']
的形状