使用 Tf-idf 作为 CNN 模型中的特征
Use Tf-idf as features in CNN model
我有一个 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()
我收到以下错误。请提供任何提示来解决我的问题。
我也试过将输入层更改为 Input(batch_shape=(None,tf_len, 1))
但得到了同样的错误。
ValueError:检查输入时出错:预期 input_1 具有 3 个维度,但得到形状为 (1000, 5008) 的数组
在这个(答案)部分指定答案,即使它已经存在于评论部分。
添加以下代码行,
TF_X_train.reshape(TF_X_train.shape[0], TF_X_train.shape[1],1)
并将输入层更改为
Input(batch_shape=(None, tf_len, 1))
已修复错误。
我有一个 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()
我收到以下错误。请提供任何提示来解决我的问题。
我也试过将输入层更改为 Input(batch_shape=(None,tf_len, 1))
但得到了同样的错误。
ValueError:检查输入时出错:预期 input_1 具有 3 个维度,但得到形状为 (1000, 5008) 的数组
在这个(答案)部分指定答案,即使它已经存在于评论部分。
添加以下代码行,
TF_X_train.reshape(TF_X_train.shape[0], TF_X_train.shape[1],1)
并将输入层更改为
Input(batch_shape=(None, tf_len, 1))
已修复错误。