【问题标题】:when training sample increases accuracy decreases当训练样本增加时,准确性会降低
【发布时间】:2025-12-23 07:50:06
【问题描述】:

我正在测试 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))

谁能解释为什么会这样。我虽然有更多的样本(和更少的过度拟合),但我应该得到一个非常好的模型。

感谢您的建议

【问题讨论】:

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


    【解决方案1】:

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

    来自docs

    num_words:整数或无。要考虑的最常见的词。任何不常见的词都会在序列数据中显示为 oov_char 值。

    【讨论】:

    • 感谢 Julian,我在剖析 imdb 数据时发现单词与采样大小无关。感谢您澄清这一点。