Позвольте Мне упростить этот вопрос.
Если я запускаю opencv MLP train и последовательно классифицирую одни и те же данные, я получаю разные результаты. Это означает, что если я добавлю тренировку нового mlp к одним и тем же данным поезда и классифицирую по тем же тестовым данным в цикле for, каждая итерация даст мне разные результаты. Хотя я создаю новый объект mlp каждую итерацию. Однако, если вместо использования цикла for я просто запускаю программу несколько раз, перезапуская программу после каждого поезда и классифицируя; результаты точно такие же.
Итак, вопрос в том, использует ли opencv предыдущие веса, переменные или что-то в этом роде из других поездов mlp? Даже если это не тот же объект mlp. Кто-нибудь знает, почему он это делает?
Спасибо за время!
-Тим
До сих пор я немного повозился, но то, что я увидел, подтверждает мое первое подозрение …
Похоже, что каждый раз, когда вы запускаете программу, генератор случайных чисел заполняется до фиксированного значения:
rng = RNG((uint64)-1);
Поэтому каждый раз, когда вы запускаете программу, вы генерируете одну и ту же случайную последовательность. Работая в цикле, вы продолжаете генерировать следующие случайные числа в последовательности, которая отличается (как правило) от последней последовательности.