训练样本增加时准确性降低

时间:2019-06-04 19:19:53

标签: python-3.x machine-learning neural-network keras-layer

我正在测试keras的imdb数据集。问题是,当我分开训练并测试2000个单词时,我的准确性接近87%:

(X_train, train_labels), (X_test, test_labels) = imdb.load_data(num_words=2000)

但是当我将单词增加到5000或10000时,该模型的效果就会很差:

(X_train, train_labels), (X_test, test_labels) = imdb.load_data(num_words=10000)

这是我的模特:

model = models.Sequential()

model.add(layers.Dense(256, activation='relu', input_shape=(10000,)))

model.add(layers.Dense(16, activation='relu' ))

model.add(layers.Dense(1, activation='sigmoid'))

model.compile(optimizer='adam',
            loss='binary_crossentropy',
            metrics=['accuracy'])
history =model.fit(X_train, y_train, epochs=10, batch_size=64,validation_data=(x_val, y_val))

任何人都可以解释为什么会这样。尽管我有更多的样本(但拟合不足),但我应该得到一个很好的模型。

谢谢您的建议

1 个答案:

答案 0 :(得分:1)

增加num_words不会增加样本数量,但会增加词汇量,从而(统计上)导致每个样本有更多的单词,朝curse of dimensionality的方向发展,这对模型有害。

来自docs

  

num_words:整数或无。需要考虑的最常见的单词。频率较低的单词将在序列数据中显示为oov_char值。