Обучение уменьшается, проверка - увеличивается. Потеря обучения, уменьшение потерь на валидацию - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь внедрить LRCN, но в процессе обучения я сталкиваюсь с препятствиями.В настоящее время я пытаюсь обучить только модуль CNN, а затем подключить его к RNN.Результат, который вы видите ниже, является несколько лучшим из возможных, которых я достиг до сих пор.Проблема в том, что все идет хорошо, кроме точности обучения.Он постепенно падает.

Моя модель имеет агрессивные выпадения между слоями FC, поэтому это может быть одной из причин, но все же, вы думаете, что-то не так с этими результатами и что я должен стремиться изменить, если они продолжатtrend?

Число классов для прогнозирования равно 3. Код написан на языке керас.

Эпоха 1/20 16602/16602 [==============================] - 2430 с 146 мс / шаг - потеря: 1,2583 - соотв .: 0,3391 - val_loss: 1,1373 - val_acc: 0,3306

Epoch 00001: val_acc улучшен с -inf до 0.33058, сохраняя модель в весах. 01-1.14.hdf5 Epoch 2/20 16602/16602 [==============================] - 2441 с 147 мс / шаг - потеря: 1,1998 - в соотв. 0,3356 - val_loss: 1,1342 - val_acc: 0,3719

Эпоха 00002: val_acc улучшено с 0,33058 до 0,37190, сохраняя модель в весах.02-1.13.hdf5 Epoch 3/20 8123/16602 [=============> ................] - ETA: 20:30- потеря: 1,1889 - акк: 0,3325

У меня есть еще 2 коротких вопроса, на которые я не могу ответить вwhile.

  1. Почему тензор, выводимый мной из моего пользовательского генератора видеоданных, имеет размеры: (4, 288, 224, 1) а слой моей входной формы генерируется как (None, 288, 224, 1)?Чтобы прояснить форму, я классифицирую партии из 4-х, содержащие отдельные изображения в не распространяемой во времени CNN.Я использую функциональный API.
  2. Позже, когда я обучу RNN, мне нужно будет делать прогнозы на шаг по времени, затем усреднять их и выбирать лучший в качестве прогноза моей общей модели.Метрики ['точность'] делает это или мне нужна пользовательская функция метрики?Если последнее, как мне написать один в соответствии с: Keras doc. the results from evaluating a metric are not used when training the model.Нужна ли для этой цели специальная целевая функция (потеря)?

Любая помощь, опыт будут высоко оценены, мне это действительно нужно.Заранее спасибо!

1 Ответ

0 голосов
/ 25 января 2019

Пока потери продолжают падать, точность должна постепенно увеличиваться. Поскольку вы тренировались только в течение 2-3 эпох, я бы сказал, что это нормально, что точность может колебаться.

Что касается других ваших вопросов:

  1. Понятие для входной формы слоя: (batchSize, dim1, dim2, nChannels). Поскольку ваша модель не знает размер партии до тренировки, None используется как своего рода заполнитель. Размеры изображения кажутся правильными, а количество каналов в одном означает, что вы не используете цветные изображения, поэтому на пиксель приходится только одна запись.
  2. Я думаю, что метрика точности должна работать хорошо, однако у меня нет опыта работы с RNN, поэтому, возможно, кто-то другой может ответить на этот вопрос.
...