python-3.x - 当训练样本增加时,准确率降低

标签 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))

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

感谢您的建议

最佳答案

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

来自docs :

num_words: integer or None. Top most frequent words to consider. Any less frequent word will appear as oov_char value in the sequence data.

关于python-3.x - 当训练样本增加时,准确率降低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450080/

相关文章:

python 3 : Get Bytes from File

python - 更改 Python 交互提示 ">>>"

machine-learning - CNN 中的反向传播(通过卷积层)和梯度

python - 对于神经网络,学习率是否应该以某种方式与隐藏层大小成正比?他们应该互相影响吗?

python - 使用 PyTorch nn.Sequential() 以灵活的方式定义网络,但结果超出预期

python - 从列表中分离整数和字符串

python-2.7 - Python - 使用朴素贝叶斯选择来自模型

machine-learning - Weka 用于评估连续值熵的 InfoGainAttributeEval 公式是什么?

r - sbf() 是否使用度量参数来优化模型?

Python - 将项目发送到 Word 中的下一页