将Tf-idf用作CNN模型中的功能

时间:2020-03-11 14:46:40

标签: python tensorflow keras conv-neural-network tf-idf

我有一个CNN模型,可以在word2vec矩阵作为输入的情况下很好地运行。现在,我正在尝试使用tf-idf功能作为CNN模型的输入。我的模型有2个卷积层。

||

我收到以下错误。请提供任何提示来解决我的问题。

我也尝试将输入层更改为vectorizer = TfidfVectorizer(max_features=10000, use_idf=True) vectorizer = vectorizer.fit(train_sentences) tf_len = len(vectorizer.vocabulary_) TF_X_train = vectorizer.transform(train_sentences).astype('float64') TF_X_test = vectorizer.transform(test_sentences).astype('float64') TF_X_val = vectorizer.transform(val_sentences).astype('float64') input = Input(shape=(tf_len,1)) drop20 = SpatialDropout1D(0.3)(input) conv2 = Conv1D(filters=128, kernel_size=5, activation='relu')(drop20) drop21 = Dropout(0.5)(conv2) conv22 = Conv1D(filters=64, kernel_size=5, activation='relu')(drop21) drop22 = Dropout(0.5)(conv22) pool2 = MaxPooling1D(pool_size=2)(drop22) flat2 = Flatten()(pool2) out = Dense(8, activation='sigmoid')(flat2) model = Model(input, out) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.summary() ,但遇到相同的错误。

ValueError:检查输入时出错:期望input_1具有3个维度,但数组的形状为(1000,5008)

1 个答案:

答案 0 :(得分:0)

在“答案”部分中指定答案,即使“评论”部分中已经存在答案。

添加下面的代码行,

TF_X_train.reshape(TF_X_train.shape[0], TF_X_train.shape[1],1)

并将输入层更改为

Input(batch_shape=(None, tf_len, 1))

已修复该错误。