4

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

epoch_x, epoch_y = tf.train.batch([resized_image, "Normal"], batch_size=batch_size) 

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

+0

Это похоже [вопрос] (http://stackoverflow.com/questions/8101925/effects-of-randomizing-the-order-of-inputs-to-a-neural-network)? – vendaTrout

ответ

6

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

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

Эти методы предотвращают любые предвзятости в обучении нейронной сети.

+0

О, я этого не знал. Каждая партия должна содержать положительные и отрицательные примеры? Как нейронная сеть знает, какой образ положителен и какое изображение отрицательное? Где я могу это указать? –

+0

@RehaanAhmad Метки (y) указывают NN, к какому классу относится каждый образец. –

+0

Подождите, вы можете предоставить более подробную информацию? Как определить те метки в тензорном потоке? –