Я использую Octave с нейронной сетью (по курсу Эндрю Нг ex4) для классификации (3 класса).
99% ожидаемого выхода сети приходятся на класс 3 (42 результата не для класса 3). Thera 330 объектов на входном слое. У меня есть 4300 примеров для обучения, поэтому я разделил наборы Train, Cv и Test таким образом, чтобы в каждом наборе было одинаковое количество результатов, не относящихся к классу 3. (в каждом около 17)
1 - я тренирую сеть, представляя случайные инициализированные параметры (с epsilon_int на 0.12) с моим набором Train и получаю 2 тета (1 скрытый слой) обратно из fmincg.
2- Затем я использую те тета из набора Поезд в качестве начальных тэта для функции fmincg, когда выполняю тренировку Cv, например, с помощью. 2 различное количество узлов в скрытом слое (например, 350 и 400) и использование 3 лямбда, так что я получаю 6 наборов результатов (n ° узлов hidd, лямбда, стоимость, тета-пары). (maxIter был установлен на 200).
3- Эти 6 комбинаций используются в наборе тестов с использованием функции «прогноз», которая создает гипотезу, применяет ее к каждому примеру набора тестов и проверяет точность прогноза в% правильных результатов для каждого примера. (Я не использовал fmincg для обучения на Testset). Чтобы в 42 прогнозах, не относящихся к классу 3, было менее 1 ошибки, мне нужна точность 99,99%, поскольку только 1% не относится к классу 3.
Является ли процедура, которой я следовал, правильной, или я что то пропустил? (Особенно в отношении использования тета с CV и Testset). Это не ясно для меня, так как это мой первый опыт общения с NN ..