Почему точность проверки достигает 1,00, а точность обучения - 99%. Мои данные состоят из 49 функций и 700 тыс. Образцов - PullRequest
0 голосов
/ 18 июня 2019

Моя точность проверки достигает 100% и почти остается в течение последних 100 эпох или около того.При этом точность обучения колеблется от 98 до 99%.Я использую нейронную сеть с 2 скрытыми слоями.Это проблема классификации нескольких классов.

Размер обучающих данных составляет 777385, а валидация составляет 20%.

Код:

model_Lrelu_3L3N = Sequential()
model_Lrelu_3L3N.add(Dense(3, input_dim=49, activation='linear'))
model_Lrelu_3L3N.add(LeakyReLU(alpha=.01))
model_Lrelu_3L3N.add(Dense(3,input_dim = 5, activation ='linear'))
model_Lrelu_3L3N.add(LeakyReLU(alpha=.01))
model_Lrelu_3L3N.add(Dense(9, activation='softmax'))
model_Lrelu_3L3N.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model_Lrelu_3L3N.fit(xcon_train,Ycon_train,validation_split = 0.20, batch_size = 100, epochs = 800)

1 Ответ

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

Не уверен, какую платформу вы используете, но при общей валидации и обучении данные разные.Набор проверки в большинстве случаев меньше, чем обучение.Когда вы тренируетесь, ваша сеть обновляется в соответствии с градиентами, рассчитанными на тренировочном наборе.Однако метрика производительности по вашему выбору применяется при проверке набора.Причиной этого является точечная перегрузка.Если ваша сеть работает хорошо на тренировках, но плохо на наборе проверки, это признак перегрузки, потому что сеть не может работать хорошо на данных проверки.

Что касается точности, по моему мнению, единственное объяснение состоит в том, что ваша сеть работает хорошоНабор проверки Job + содержит образцы, подходящие для вашей сети.С другой стороны, тренировочный набор, вероятно, больше, и есть несколько образцов, которые были неправильно классифицированы.Попробуйте поиграть с размером набора проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...