Разница между точностью обучения и точностью расчета с помощью прогнозирования класса - PullRequest
0 голосов
/ 21 февраля 2020

Я обучил свою нейронную сеть с набором данных из 11200 изображений, и его точность проверки составила 96%. Я сохранил свою модель и загрузил ее веса в ту же нейронную сеть. Я выбрал 738 изображений своего набора данных в массиве и попытался предсказать класс каждого из них с помощью моей модели и сравнить их с истинными метками, затем снова вычислил процент точности, и он составил 74%. в чем здесь проблема? Я предполагаю, что его точность должна снова составить около 96%.

prelist=[]
for i in range(len(x)):
    prediction = model.predict_classes(x[i])
    prelist.append(prediction)
count = 0
for i in range(len(x)):
    if(y[i] == prelist[i]):
        count = count + 1
test_precision = (count/len(x))*100
print (test_precision)

, когда я использую класс предсказания на 11200 изображениях, которые я использовал для обучения нейронной сети, и сравнил его результат с истинными метками и снова вычислил точность, его точность равна 91%. Я использую Ale xNet и бинарную классификацию в этой задаче. Спасибо.


PS: я прикрепил свои модельные участки, я думаю, это не слишком подходит, в конце я прикрепил переопределенный модельный участок.

Loss Plot Accuracy Plot

И переопределенный график потерь такой:

enter image description here

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Как указали Стюарт Рассел и Питер Норвиг в "Искусственном интеллекте: современный подход"

... вы все еще хотите измерить производительность на невидимых данных как способ выбора хорошей гипотезы, затем разделите имеющиеся данные ... на обучающий набор и проверочный набор.

  • Данные поезда: Вы всегда тренируете модель по данным поезда. Модель имеет доступ к истинным меткам, и есть вероятность того, что модель более соответствует данным поезда и имеет высокую точность поезда.
  • Данные проверки: Если вы хотите узнать, насколько хороша модель Затем оцените модель по невидимым данным. Эти данные обычно называют данными проверки, потому что вы настраиваете параметры рекламы во время поезда, чтобы получить лучшую точность проверки. Это также может привести к переоснащению (через гиперпараметры) данных валидации.
  • Данные теста: Вы можете выполнить окончательную оценку модели, используя данные теста, и опубликовать sh эти результаты в качестве производительности модели.

Во время обучения вы обычно наносите на карту поезд и потерю валидации (или точность) в каждую эпоху, чтобы остановить тренировку, когда потеря валидации увеличивается, но потеря поезда уменьшается.

Вы явно более подходящие, см. график ниже

enter image description here

Что делать, если данные слишком малы, чтобы их можно было разделить на тест на валидацию поездов ? : Использовать k-кратную стратегию перекрестной проверки.

0 голосов
/ 23 февраля 2020

Во-первых, вы не должны оценивать показатель точности на изображениях, используемых во время тренировки. Оценка модели всегда сводится к разделению имеющихся данных на три группы: обучение, проверка и тестирование. Вы тренируетесь на тренировочных данных и оцениваете свою модель на основе оценки потери данных и оптимизируете / настраиваете конфигурацию netowork во время обучения). Как только ваша модель готова к прайм-тайм, вы проверяете ее на тестовых данных.

После завершения обучения вы можете оценить точность на тестовом наборе. Если он все еще составляет ~ 70%, а точность обучения - ~ 90%, скорее всего, модель приведет к перенастройке в набор для проверки. Чтобы противостоять этому, вы можете прибегнуть к таким методам, как

  • Получить больше данных тренировки
  • Добавить регуляризацию веса
  • Добавить выпадение
  • Уменьшить пропускную способность сети
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...