Re[2]: поэтапные вычисления
От: nayato Россия  
Дата: 25.03.05 18:29
Оценка:
N>>Здравствуйте. Вопрос следующий: Есть нейросеть (но это не столь важно). Нужно после вычисления значений в текущем слое проводить вычисления в следующем.
LF>Тут зависит от того как у вас организованна сама сеть.
LF>Для меня например структура видится следующим образом. Список слоев. Для каждого слоя сети имеется список нейронов. У каждого нейрона список нейронов из предыдущего слоя выходные значения которых соединены с его входом. Тогда при вычислении на i слое нейрон сам забирает данные которые ему нужны из нейронов i-1 слоя. Зачем вообще нужны промежуточные массивы мне непонятно.

Неее... нейрон-объект — нерационально!
Я вижу так: слой как основной (центральный так сказать) класс, реализующий принципы сети:
1) является элементарным классом (нет нейрону объекту! )
2) активация поведения через события от предыдущего слоя (в случае первого — от сенсорного). Таким образом реализую реорганизацию сети при изменении числа нейронов в некотором слое, распространение вычислительного процесса, pruning, BP...

Сеть при этом становится сервисным таким объектом — регулирование структуры слоев, их инициализация, модификация, интерфейс статистики, формирование ОВ, ТВ, инициация вычислений и т.п.

Кстати у меня в связи с таким подходом вопрос один, а в новый топик не охота...
При инициализации очередного слоя (при определении связей с предыдущим) нужно получить массив указателей (с этим уже определился) на выходы слоя. По выбранной архитектуре получается, что это необходимо сделать при возникновении события реорганизации, инициированного этим самым предыдущим слоем. Вроде:

TLayer.setNeuronCount(...);
begin
  ...
  if assigned(fOnReorganize) then
    fOnReorganize(???);
end;


Вместо вопросиков можно поставить внутреннее (private) поле-массив указателей на выходы либо же у TLayer организовать интерфейс для получения таких указателей (в protected) и вместо вопросиков передавать самого себя любимого.
Первый подход будет быстрее, но вопрос: будет ли его использованием нарушением принципов ООП? Второй-то подход очевидно обеспечивает целостность и "внутреннесть" своих данных, а первый не очень как-то...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.