использование flow_from_directory для обучения и проверки без дополнения - PullRequest
0 голосов
/ 03 июня 2019

Я тренирую простую CNN с Nt = 148 + Nv = 37 изображений для обучения и проверки соответственно.Я использовал метод ImageGenerator.flow_from_directory(), потому что я планирую использовать расширение данных в будущем, но в настоящее время я не хочу никакого увеличения данных.Я просто хочу читать изображения с диска одно за другим (и каждое ровно один раз, это в первую очередь важно для проверки), чтобы избежать загрузки всех их в память.

Но следующее заставляет меня думать, что что-то другоечем ожидалось:

  1. точность обучения и проверки достигают значений, которые не похожи на дробь с 148 или 37 в качестве знаменателя.На самом деле попытка оценить разумный знаменатель из множества множителей дельты приводит к числам, намного превышающим 148 (около 534 или 551, см. Ниже (*), почему я думаю, что они должны быть кратны 19) и 37
  2. проверка всех прогнозов как для обучающих, так и для проверочных наборов данных (с отдельной программой, которая читает каталог проверки только один раз и не использует вышеуказанные генераторы), показывает количество сбоев, которое не совсем точно (1-val_acc) *Н.В., как я и ожидал

(*) Наконец, я обнаружил, что размер партии, который я использовал для обоих, равен 19, поэтому я ожидаю, что я обеспечу 19 * 7 = 133 или 19 * 8 = 152 обученияизображений за эпоху и 19 или 38 изображений в качестве проверки, установленной в конце каждой эпохи.

Кстати: можно ли использовать model.fit_generator() с генераторами, построенными из ImageGenerator.flow_from_directory(), для достижения: - отсутствия увеличения данных - оба генератора должны соответственно предоставлять все изображения для процесса обучения и для валидацииобрабатывать ровно один раз за эпоху - тасование хорошо и действительно желательно, так что каждая эпоха работает по-разному

Тем временем я ориентируюсь на то, чтобы установить размер пакета равным длине проверочного набора (т.е. 37).Будучи делителем численности обучающего набора, я думаю, что это должно работать с числами.

Но, тем не менее, я не уверен, что следующий код соответствует требованию «вообще никакого увеличения данных»

valid_augmenter = ImageDataGenerator(rescale=1./255)

val_batch_size = 37

train_generator = train_augmenter.flow_from_directory(
    train_data_dir,
    target_size=(img_height, img_width),
    batch_size=val_batch_size,
    class_mode='binary',
    color_mode='grayscale',
    follow_links=True )

validation_generator = valid_augmenter.flow_from_directory(
    validation_data_dir,
    target_size=(img_height,img_width),
    batch_size=val_batch_size,
    class_mode='binary',
    color_mode='grayscale',
    follow_links=True )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...