Валидация и точность обучения высоки в первую эпоху [Керас] - PullRequest
0 голосов
/ 19 мая 2018

Я тренирую классификатор изображений с 2 ​​классами и изображениями 53k и проверяю его с помощью изображений 1.3k, используя керасы.Вот структура нейронной сети:

model = Sequential()
model.add(Flatten(input_shape=train_data.shape[1:]))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(256, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam',
              loss='binary_crossentropy', metrics=['accuracy'])

Точность обучения увеличивается с ~ 50% до ~ 85% в первую эпоху, с точностью проверки 85%.Последующие эпохи последовательно повышают точность обучения, однако точность проверки остается в области 80-90%.

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

Спасибо

РЕДАКТИРОВАТЬ: размер изображения 150x150 после масштабирования и размер мини-партии 16.

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Вы не можете ожидать получения точности более 90-95% при классификации изображений с использованием нейронных сетей с прямой связью.

Вам необходимо использовать другую архитектуру, называемую Convolution Neural network, современную технологию распознавания изображений.

Кроме того, это очень легко построить с использованием керас, но вычислительно более интенсивно, чем это.

Если вы хотите придерживаться слоев с прямой связью, лучшее, что вы можете сделать - это ранняя остановка,но даже это не даст вам точность более 90%.

0 голосов
/ 19 мая 2018

Да, вполне возможно получить высокую точность в первую эпоху, а затем только скромные улучшения.

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

Вы можете думать о своих тренировочных данных как о бесконечном потоке (который на самом деле SGD хотел бы использовать все теоремы сходимости).Считаете ли вы, что вам нужно более 50 тысяч образцов, чтобы узнать, что важно?На самом деле вы можете протестировать голод данных в вашей модели, предоставив меньше данных или сообщив о производительности после некоторого периода обновления.

0 голосов
/ 19 мая 2018

Да, эпоха должна соответствовать данным модели.

Попробуйте использовать 2 нейрона в конце и один горячий код на метке класса ур!Как будто я видел один случай, когда я получал лучшие результаты, вместо двоичного вывода.

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