2017-01-04 3 views
5

У меня есть быстрый вопрос о параметре randomizationWindow читателя. Он говорит, что в документации он контролирует объем данных в памяти - но я немного неясен, какое влияние это окажет на случайность данных. Если файл данных обучения начинается с одного распределения данных и заканчивается другим совершенно другим дистрибутивом, будет ли окно рандомизации меньше размера данных, чтобы данные, переданные тренером, не были из однородного распределения? Я просто хотел дважды проверить.Каково поведение рандомизации CNTKWindow?

ответ

3

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

+0

Звучит неплохо. Благодарю. –

4

Чтобы дать немного больше деталей на рандомизации/IO:

Все тело/данные всегда расщепляется на куски. Chunks помогают сделать IO эффективным, потому что все последовательности фрагмента считываются за один раз (обычно это кусок 32/64MB).

Когда речь идет о рандомизации, есть два шага там:

  1. все куски рандомизированные
  2. даны окно рандомизации N образцов рандомизер создает качение окна M куски, которые в общей сложности имеют приблизительно N выборок в них. Все последовательности внутри этого катания окна рандомизированы. Когда все последовательности фрагмента обрабатываются, рандомизатор может освободить его и начать загрузку следующего асинхронно.
+0

В примере конфигурации '' AlexNet', строка 114 (https://github.com/Microsoft/CNTK/blob/master/Examples/Image/Classification/AlexNet/BrainScript/AlexNet_ImageNet.cntk#L114), я вижу ' randomizationWindow = 1' - это означает, что пример не является оптимальным с точки зрения производительности ввода-вывода? –

Смежные вопросы