"Новый нейронный" - проект Open Source движка нейронной сети для платформы MetaTrader 5. - страница 78

 
А на каком этапе сейчас проект? Кто начальник?
 
Better:
А на каком этапе сейчас проект? Кто начальник?

Нет начальников, хочешь можешь быть ты.

ЗЫ Думаю завтра с обеда будет лучше поговорить.

 
Better:
А на каком этапе сейчас проект? Кто начальник?
беттер - єто не тот беттер что сов нейронный когда то победил в чемпионате?
 
shyma:
беттер - єто не тот беттер что сов нейронный когда то победил в чемпионате?
Тот. У него ПАММ-счёт где-то был... Поищи через гугл.
 
R0MAN:
Тот. У него ПАММ-счёт где-то был... Поищи через гугл.
Через профиль:-)
 
aharata:
Через профиль:-)
Да я первым делом туда и глянул - не нашёл... сходу... :-) Не проснулся ещё... :-)
 

Решил поднять старую ветку.

Предлагаю к рассмотрению универсальную модель НС.

Оппонентам предлагается представить тип сетки которую не возможно описать данной моделью!!!

Код черновой поэтому зрите в корень.

Предложенная реализация легко трансформируема как для CPU так и для GPU. В сетке предусмотрены и операторы задержки.

есть 3 пути трансформации:

оставить как есть (все 4-ри массива двумерные), подходит для GPU

out  одномерный массив, но так же используется двумерная bool маска

out  одномерный массив, и вместо маски используется массив индексов построенный из маски.

(про бинарные маски мы ранее говорили, это такая маска которая с помощью нулей и единиц показывает есть связь или нет, в данном случае нейрон это горизонтальный массив а его связи с другими указываются в его горизонте соответственными значениями бинарной маски, в тех самых ячейках но в параллельных массивах хранятся веса, выходы, и временные данные, Zx это операторы задержки x-ранга)

Model Net

class CDmem
  {
public:
                     CDmem(void){};
                    ~CDmem(void){};
   double            m[];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CBmem
  {
public:
                     CBmem(void){};
                    ~CBmem(void){};
   bool              m[];
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class CProcessing
  {
public:
                     CProcessing(void){};
                    ~CProcessing(void){};
   virtual void      Processing(int i,CBmem &mask[],CDmem &weg[],CDmem &out[],CDmem &temp[],int I,int J)
     {
      for(int j=0;j<J;j++)
        {
         temp[i].m[j]=mask[i].m[j]*weg[i].m[j]*out[i].m[j];
        }
      double sum=0;
      for(int j=0;j<J;j++)
        {
         sum+=temp[i].m[j];
        }

      double outt=2./(1.+exp(-sum));
      for(int j=0;j<J;j++)
         out[i].m[j]=outt;
     };
   void              DelayOperator(int i,CDmem &out[])
     {
      // тут мы сдвишаем от конца к началу, реализуем оператор задержки
     };
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Unet
  {
   int               cnt_prcss;
   CBmem             mask[];
   CDmem             weg[];
   CDmem             out[];
   CDmem             temp[];
   CProcessing      *prcss[];
   void              Init()
     {
      ArrayResize(mask,5);
      ArrayResize(weg,5);
      ArrayResize(out,5);
      ArrayResize(temp,5);
      for(int i=0;i<5;i++)
        {
         ArrayResize(mask[i].m,19);
         ArrayResize(weg[i].m,19);
         ArrayResize(out[i].m,19);
         ArrayResize(temp[i].m,19);
        }
     };
   void              InitProcessing(CProcessing *p)
     {
      prcss[cnt_prcss]=p;
      cnt_prcss++;
     };
public:
                     Unet(void){Init(); cnt_prcss=0;};
                    ~Unet(void)
     {
      for(int i=0;i<cnt_prcss;i++)
         delete prcss[i];
     };
   void              DonwloadMask(){};
   void              DonwloadWeg(){};
   void              Processing()
     {
      for(int i=0;i<cnt_prcss;i++)
         prcss[i].Processing(i,mask,weg,out,temp,5,19);
     };
   void              DelayOperator()
     {
      for(int i=0;i<cnt_prcss;i++)
         prcss[i].DelayOperator(i,out);
     };
  };
 

Это не модель. Где нейроны? Где связи? Где процесс? Где обратные связи?

И еще вопрос на засыпку -- зачем делать универсальную модель под все сети?

Лучше уж тогда универсальную сеть под большинтво задач (хе ) )

И зачем ты сразу переходишь к реализации? У тебя архитекура нифига не готова.

 
TheXpert:

Это не модель. Где нейроны? Где связи? Где процесс? Где обратные связи?

И еще вопрос на засыпку -- зачем делать универсальную модель под все сети?

Лучше уж тогда универсальную сеть под большинтво задач (хе ) )

Нейроны это горизонтальные массивы на рисунке. связи шифруются булевой маской.

Задавайте наводящие вопросы, что не понятно поясню, всё сразу не опишешь.

ЗЫ архитектура проистекает из модели, и примерно такой и будет.

Лучше уж тогда универсальную сеть под большинтво задач (хе ) )

ЗЗЫ  Вот и хочу проверить под все ли задачи данная модель катит или всё же нет. Одна голова хорошо а хором лучше выйдет.

Изменяя потомков класса CProcessing можно будет менять типы нейронов поштучно.

Можно дополнительно добавить массив типов нейронов и каждому задать свой тип (выбрав из потомков CProcessing).

ЗЗЗЫ Обратные связи обозначены на рисунке Zx

 
Urain:

Тогда почему у тебя маска привязана к выходу, а не опять же к нейронам )

А как ты функцию активации хочешь в ГПУ запихать?

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

Больше беспокоить не буду, разве что по делу.

А, когнитрон. Что еще -- сеть хопфилда -- там вход это выход. Еще есть sparse...