Нестабильные выходные значения от ANN и повышение точности

Я пытаюсь разработать искусственную нейронную сеть, используя PyBrain для моделирования биологических данных. Моя ИНС компилируется и запускается, но ее значение точности очень низкое, никогда не превышающее ~62%. С точки зрения кодирования, как я могу повысить точность ИНС? Я заметил, что каждый раз выходные данные ИНС тоже не совпадают, хотя набор тестовых данных не меняется — есть ли причина, по которой ИНС работает нестабильно, и как я могу это исправить?

Благодарю вас! :)


person user3847447    schedule 11.08.2014    source источник
comment
Какой тип сети вы используете? Какой тип обучения/оптимизации вы используете?   -  person janwschaefer    schedule 12.08.2014
comment
Я использую алгоритм обратного распространения, встроенный в библиотеку PyBrain, а мой скрытый слой использует функцию сжатия tanh. Я надеюсь, что это отвечает на вопрос - я был бы рад предоставить код, если это поможет.   -  person user3847447    schedule 13.08.2014


Ответы (1)


Если вы создаете новую сеть каждый раз, когда запускаете свой скрипт, то это нормально, что выходные данные разные.

Каждый раз, когда вы создаете ИНС, pybrain инициализирует веса соединений случайными значениями (в диапазоне от 0 до 1).

Вы можете сохранить свою ANN с помощью NetworkWriter и прочитать ее с помощью NetworkReader в pybrain.tools.customxml (см. документацию по коду для справки, API pybrain не хватает нескольких вещей).

Вы можете настроить процесс обучения с помощью скорости обучения и импульса. Также вы можете применить к своей сети больше обучающих эпох.

Если вы предоставите свой код, я мог бы сказать больше.

person Pawel Wisniewski    schedule 13.08.2014
comment
Благодарю вас! Однако есть ли способ сохранить итерацию, дающую наибольшую точность? - person user3847447; 13.08.2014
comment
Я лично перебираю значения импульса (от 0 до 1, шаг 0,1, но он может быть меньше, например, 0,01, если у вас есть время) и скорость обучения (от 0,1 до 1, шаг 0,1), и я использую NetworkWriter, чтобы сохранить сеть, которая показывает лучшие результаты на testOnData() из BackpropTrainer класса. - person Pawel Wisniewski; 14.08.2014