Я использую Keras с бэкэндом Tensorflow в Python. Точнее, тензор потока 1.2.1 и его сборка -in contrib.keras lib.
Я хочу использовать метод fit_generator
объекта последовательной модели, но меня смущает то, что я должен передать в качестве метода-параметров.
Прочитав документ здесь, я получил следующую информацию:
- генератор: генератор пакетов данных обучения Python; бесконечно перебирая свои тренировочные данные
- validation_data: -in мой случай - генератор пакетов данных проверки Python; в документе не упоминается бесконечный цикл по проверочным данным
- steps_per_epoch:
number of training batches = uniqueTrainingData / batchSize
- этапы проверки:
???
; = uniqueValidationData/размер пакета??? - use_multiprocessing: логический; не передавайте неприемлемые аргументы???
- рабочие: максимальное количество используемых процессов
Как указано выше с??? Я действительно не знаю, что означает validation_steps.
Я знаю определение вышеупомянутого связанного документа (Number of steps to yield from validation generator at the end of every epoch
), но это только сбивает меня с толку в данном контексте. Из документа я знаю, что генератор validation_data должен выдавать данные, пометить кортежи в форме (inputs, targets)
. В противоположность этому вышеприведенное утверждение указывает на то, что должно быть несколько "шагов для получения из генератора валидации в конце каждой эпохи", что в этом контексте означало бы, что после каждой эпохи обучения будет получено несколько пакетов валидации.
Вопросы о validation_steps
:
- Это действительно так работает? Если так: почему? Я думал, что после каждой эпохи одна партия валидации, которая в идеале не использовалась ранее, используется для валидации, чтобы убедиться, что тренинг проходит валидацию, не рискуя "обучить" модель работать лучше на уже используемых наборах валидации.
- В контексте предыдущего вопроса: почему рекомендуемое количество шагов проверки
uniqueValidationData / batches
, а неuniqueValidationData / epochs
? Не лучше ли иметь, например, 100 пакетов проверки для 100 эпох вместо x пакетов проверки, где x может быть меньше или больше указанного числа эпох? Альтернативно: если у вас намного меньше пакетов проверки, чем количество эпох, будет ли модель обучена без проверки для оставшихся эпох, или наборы проверки будут повторно использованы/переставлены + повторно использованы? - Важно ли, чтобы пакеты обучения и проверки имели одинаковый размер пакета (общий делитель дивидендов trainingDataCount и validationDataCount)?
Дополнительный вопрос о use_multiprocessing
:
- Можно ли добавлять к множеству массивов или мне нужно конвертировать их в многомерные списки?