при увеличении тренировочной выборки точность уменьшается - PullRequest
0 голосов
/ 04 июня 2019

Я тестирую набор данных 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 Ответ

1 голос
/ 04 июня 2019

Увеличение num_words не увеличивает количество выборок, но увеличивает словарный запас, приводя к большему количеству слов в выборке (статистически) в направлении проклятия размерности , которое вредно длямодель.

Из документов :

num_words: целое число или нет.Самые популярные слова для рассмотрения.Любое менее частое слово будет отображаться как значение oov_char в данных последовательности.

...