Материалы

Объектно-ориентированный подход к построению нейросетевых эмуляторов


 

Имя: TNetSynapse

Назначение: Инкапсулирует информацию о типовом элементе «синапс». Определяет его поведение и реакцию на «активацию». При посещении (активации), синапс умножает свой вес, на входное значение.

Основные поля и методы:

§        weight – значение веса синапса

§        getValue() – возвращает значение поля weight

§        visited() – реакция на «активацию» элемента «синапс». Умножить входное значение на вес.

 

Теперь рассмотрим алгоритм «запуска» нейронной сети. В результате работы нейронной сети, каждый нейрон должен быть посещен и накопленное, в сумматоре, значение должно быть передано на выход. Для решения поставленной задачи, представим модель нейронной сети ориентированным графом:

§        Окраска вершины означает, активацию элемента нейронной сети.

§        Сумматор представлен особой вершиной, которая окрашивается только после того, как будут окрашены все нейроны.

§        После окраски всех вершин, типовой элемент «выход сети» содержит результат работы нейронной сети.

Таким образом, алгоритм «запуска» нейронной сети должен окрасить все вершины графа. За основу возьмем алгоритм обхода графа в ширину. Т.к. в графе есть вершина особого вида (сумматор), которая окрашивается лишь при последнем посещении, в отличие от обычных вершин, которые окрашиваются при первом, модифицируем используемую в алгоритме структуру данных типа очередь. Вершина добавляется в очередь лишь при условии, что в ней еще нет этой вершины. Там образом «сумматор» добавиться в очередь только при первом посещении, а удалиться, только после того, как будут окрашены все нейроны.

 

 

1 2 3 4 5 6
Общее время работы: 17.691135406494 мс
Использование памяти: 658 КБ