Я пытаюсь найти оптимальные параметры моей модели нейронной сети, реализованной на октаве, эта модель используется для двоичной классификации и 122 функций (входов) и 25 скрытых единиц (1 скрытый слой). Для этого у меня есть 4 матрицы / вектора:
size(X_Train): 125973 x 122
size(Y_Train): 125973 x 1
size(X_Test): 22543 x 122
size(Y_test): 22543 x 1
Я использовал 20% обучающего набора для создания проверочного набора (XVal и YVal).
size(X): 100778 x 122
size(Y): 100778 x 1
size(XVal): 25195 x 122
size(YVal): 25195 x 1
size(X_Test): 22543 x 122
size(Y_test): 22543 x 1
Цель состоит в том, чтобы создать кривые обучения NN. Я узнал (на собственном опыте, xD), что это требует времени очень, потому что я использовал для этого полный размер Xval и X.
Я не знаю, есть ли для этого альтернативное решение. Я подумываю уменьшить размер обучающего вектора X (например, 5000 образцов), но я не знаю, смогу ли я это сделать, или результаты будут смещенными, так как я буду использовать только часть обучения. установленный?
Лучшие,
Спасибо, что заметили это, я внес исправления.





Общее количество приведенных выше параметров составляет около 3k (122 * 25 + 25 * 1), что для одного примера не так уж и много. Поскольку количество примеров велико, вы можете использовать стохастический градиентный спуск или мини-пакеты вместо градиентного спуска.
Обратите внимание, что Matlab и Octave в целом медленные, особенно с циклами. Вам нужно написать код, который использует матричные операции, а не циклы для управления скоростью в Matlab / Octave.
Я использую функцию fmincg, которая использует метод сопряжения градиента и более эффективна с точки зрения памяти (я думаю, что прочитаю о мини-пакетном градиентном спуске и посмотрю, смогу ли я его реализовать) Кроме того, я согласен с вами в том, что вы сказали о циклах . Но я векторизовал свой код.
А что вы думаете о количестве используемых мной скрытых юнитов? это много?
Вы можете попробовать с меньшими числами, такими как 3 или 5, но 25 не кажется слишком большим.
Я имею в виду, что трудно понять, что выбрать. Я провел небольшое исследование и нашел несколько формул, которые могут помочь с количеством скрытых единиц, например (H = ввод * 70% или H = ввод * 90% или H = (ввод + вывод) / 2). Но у меня 122 входа! если я воспользуюсь любым из них, я получу ужасно большие скрытые отряды. Вот почему я решил начать с 25. Но я попробую меньшее число, как вы предложили!
Размер Y_test должен быть 22543 x 1.