Эффективное умножение матриц для генетического алгоритма - PullRequest
0 голосов
/ 27 мая 2019

Я недавно закончил свой первый генетический алгоритм хазу и, естественно, стремлюсь сделать его более эффективным. Любой совет приветствуется.

Я создал его без использования каких-либо библиотек, которые специализируются на создании нейронных сетей, потому что я хочу получить глубокое понимание того, как они работают.

При этом я полностью осознаю, что функции прямой связи будет недостаточно.

Вот как работает прямая связь:

В создание агента передается массив в виде [входы, скрытые, выходы]

Это приведет к «Топологии», которая выглядит как [2,3,2], которая представляет собой сеть с 2 входами, 3 скрытыми нейронами и 2 выходами.

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

[[{DICT},{DICT}],
[{DICT},{DICT},{DICT}],
[{DICT},{DICT}]]

Затем я назначу случайные значения словарям в формате:

(x_desitnation,y_destinstion):random-Val

Что, по сути, дает "адрес" в массиве, в который будет передано значение.

Моя функция обратной связи циклически перебирает каждый словарь и передает значения вперед на следующий слой.

Вполне вероятно, что написание этого в numpy повысит его эффективность?

Есть ли другие предложения, которые могут помочь моему коду работать более эффективно?

Спасибо заранее.

...