"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 34

 
joo:
Ich werde versuchen, mit ihm in Kontakt zu treten - er verschwindet für lange Zeit. Natürlich wäre es toll, einen eigenen Artikel über OpenCL mit MQL5 zu haben. Besonders jetzt.

Wie läuft's?JavaDev war seit über einem Monat nicht mehr auf Skype.

Hier ist ein Stück Code von ihm, das zeigt, wieOpenCL funktioniert

[05.06.2011 17:29:59] JavaDev:    __kernel void MFractal(                           \r\n"
"                        float x0,                    \r\n"
"                        float y0,                    \r\n"
"                        float x1,                    \r\n"
"                        float y1,                    \r\n"
"                        uint  max,                   \r\n"
"         __global       uint *out)                   \r\n"
"     {//------------------------------------------   \r\n"
"         size_t  w = get_global_size(0);             \r\n"
"         size_t  h = get_global_size(1);             \r\n"
"         size_t gx = get_global_id(0);               \r\n"
"         size_t gy = get_global_id(1);               \r\n"


"         float dx = x0 + gx * (x1-x0) / (float) w;           \r\n"
"         float dy = y0 + gy * (y1-y0) / (float)h;           \r\n"

"         float x  = 0;                               \r\n"
"         float y  = 0;                               \r\n"
"         float xx = 0;                               \r\n"
"         float yy = 0;                               \r\n"
"         float xy = 0;                               \r\n"

"         uint i = 0;                                  \r\n"
"         while ((xx+yy)<4 && i<max) {                \r\n"
"            xx = x*x;                                \r\n"
"            yy = y*y;                                \r\n"
"            xy = x*y;                                \r\n"
"            y = xy+xy+dy;                            \r\n"
"            x = xx-yy+dx;                            \r\n"
"            i++;                                     \r\n"
"      }                                              \r\n"

"      if (i == max) {                                \r\n"
"         out[w*gy+gx] = 0;                           \r\n"
"      } else {                                       \r\n"
"        out[w*gy+gx] = (uint)((float)0xFFFFFF/(float)max)*i;                \r\n"
"    }                                               \r\n"
"   }//--------------------------------------------   \r\n"

 

   int calcOCL() {
      ulong startTime = GetTickCount();
      CL_STATUS status;
      cl_mem data_buf;
      data_buf = ctx.CreateBuffer(CL_MEM_ALLOC_HOST_PTR,CL_MEM_READ_WRITE,m_SizeX*m_SizeY,FLOAT,status);
      if (status!=CL_SUCCESS) {
         Alert("CreateBuffer: ", EnumToString(status));
         return (-1);
      }
      float x0 = -2;
      float y0 = -0.5;
      float x1 = -1;
      float y1 =  0.5;
      uint  max = iterations;
      
      
      kernel.SetArg(0,x0);
      kernel.SetArg(1,y0);
      kernel.SetArg(2,x1);
      kernel.SetArg(3,y1);
      kernel.SetArg(4,max);
      kernel.SetArg(5,data_buf);
      
      uint offset[2] =  {0,0};
      uint work  [2];  work[0]= m_SizeX; work[1]= m_SizeY;
      uint group [2];  group [0] = wgs; group [1] = 1; 
      
      status = queue.NDRange(kernel, 2, offset, work, group);
      oclFlush(queue);
      
      for (int y=0;y<m_SizeY;y++) {
         status = queue.ReadBuffer(data_buf,true,y*m_SizeX,m_SizeX,Line[y].Pixel);
         if (status!=CL_SUCCESS) {
            Alert("ReadBuffer: ", EnumToString(status));
            break;
         }
      }
      oclFinish(queue);
      
      data_buf.Release();
      queue.Release();
      uint endTime = GetTickCount();
      return (int)(endTime-startTime);
   }
   
   uint calcMQL() {
      uint startTime = GetTickCount();
      float x0 = -2;
      float y0 = -0.5;
      float x1 = -1;
      float y1 =  0.5;
      uint  max = iterations;
      uint  w = m_SizeX;
      uint  h = m_SizeY;
      
      for (uint gy =0;gy<h;gy++) {
         for (uint gx =0;gx<w;gx++) {
            float dx = x0 + gx * (x1-x0) / w;
            float dy = y0 + gy * (y1-y0) / h;

            float x  = 0;
            float y  = 0;
            float xx = 0;
            float yy = 0;
            float xy = 0;
            uint i = 0;
            while ((xx+yy)<4 && i<max) {
               xx = x*x;
               yy = y*y;
               xy = x*y;
               y = xy+xy+dy;
               x = xx-yy+dx;
               i++;
            }

            if (i == max) {
               Line[gy].Pixel[gx]=0;
            } else {
               Line[gy].Pixel[gx] = (int) (((float)i/max)*0xFFFFFF);
                 }
         }
      }
      uint endTime = GetTickCount();
      return (int)(endTime-startTime);
   }
};
 
Graff:

Wie läuft's?JavaDev war seit über einem Monat nicht mehr auf Skype.

Ich habe mich mit ihm in Verbindung gesetzt, JavaDev behält das Thema im Auge.
 
joo:
Ich habe mich mit ihm in Verbindung gesetzt, JavaDev behält das Thema im Auge.
Hurra, es besteht Hoffnung, dass das Projekt nicht sterben wird :)
 

Vortrag 1 hier https://www.mql5.com/ru/forum/4956/page23

Vorlesung 2. Biologische Methoden der Informationsverarbeitung

Ich werde das Prinzip der Entladungen in Netzwerken kurz verlassen und kurz auf das Wesen der biologischen Transformation von Information eingehen. Dann werde ich alles miteinander verknüpfen. Betrachten wir zum Beispiel die Umwandlung von Informationen im visuellen Kortex. Dieses Thema ist weit davon entfernt, gehandelt zu werden, aber es hilft, kluge Gedanken zu fassen. Übrigens wurden viele Netzwerke wie Kohonen-Karten und Skalen-Selbstlernmethoden eingeführt, um den visuellen Kortex zu modellieren. Die visuellen Informationen werden also von den Photorezeptorzellen der Netzhaut in elektrische Signale umgewandelt, dann von den retinalen Ganglienzellen (RGCs) gefiltert und schließlich über die LGN-Relaiszellen, deren Aufgabe noch nicht ganz klar ist, an den visuellen Kortex weitergeleitet. Die Ganglienzellen der Netzhaut fungieren als räumliche Bandpassfilter und heben die Konturen von Objekten hervor. Die Funktionsweise ist der Kantenerkennung in Photoshop sehr ähnlich. Es ist recht interessant, dass wir die Welt durch die Grenzen von Objekten wahrnehmen. Im visuellen Kortex durchläuft das gefilterte Bild mehrere neuronale Schichten mit abstrusen Namen und Abkürzungen. Es gibt zwei Kanäle für die Umwandlung visueller Informationen: den "Was"-Kanal, der für die Objekterkennung zuständig ist, und einen parallelen "Wo"-Kanal zur Lokalisierung von Objekten und zur Wahrnehmung ihrer Bewegung. Wir interessieren uns für den ersten Kanal, der aus den zweidimensionalen Schichten V1, V2, V4 und IT besteht, die parallel zur Netzhaut angeordnet sind (nicht im Raum, sondern funktionell). Die Struktur dieser Schichten ist recht komplex. Elektrische Signale werden von den Ganglienzellen der Netzhaut an V1, von V1 an V2 usw. übertragen. Die Zellen einer Schicht erhalten ihre Eingaben sowohl von den Zellen der vorhergehenden Schicht (direkte Signalausbreitung) als auch von ihren Nachbarn (schichtinterne rekurrente Verbindungen). Es gibt auch wiederkehrende Verbindungen, die oft vernachlässigt werden, weil sie schlecht verstanden werden. Die Informationsumwandlung im visuellen Kortex kann in der folgenden vereinfachten Form grafisch dargestellt werden:

Die einfachen Zellen S1 liegen in V1 und sind Filter für elementare Konturfragmente (Objektgrenzen), d. h. kurze Liniensegmente mit unterschiedlichen Neigungswinkeln, unterschiedlichen Längen, unterschiedlichen Polaritäten (helle Linie auf dunklem Hintergrund, dunkle Linie auf hellem Hintergrund) und unterschiedlichen Positionen im zweidimensionalen Raum. Jede S1-Zelle "betrachtet" im Wesentlichen einen bestimmten Bildausschnitt durch einen schmalen "Schlitz" mit einer bestimmten Neigung und Länge und reagiert nur, wenn der Umriss in diesem Ausschnitt in Neigung, Länge und Polarität mit dem "Schlitz" übereinstimmt.

Komplexe Zellen C1 liegen ebenfalls in der Schicht V1. Wie die einfachen S1-Zellen reagieren sie auf kurze Kontursegmente mit einer bestimmten Neigung und Länge innerhalb eines bestimmten Bildbereichs, sind aber weniger empfindlich gegenüber Verschiebungen parallel zu diesen Segmenten (Verschiebungsinvarianz).

Die einfachen Zellen S2 liegen in den Schichten V2 und V4. Es handelt sich um räumliche Filter mit komplexeren Formen, die aus zwei geraden Segmenten mit unterschiedlicher Neigung und Länge bestehen (z. B. G, T, L, V, X). Sie reagieren auf diese Formen an verschiedenen Stellen des Bildes.

Komplexe Zellen C2 (komplexe Zellen C1) liegen in den Schichten V2 und V4. Auch sie sind räumliche Filter für komplexere Formen, die aus zwei geraden Liniensegmenten unterschiedlicher Neigung und Länge bestehen, reagieren aber weniger empfindlich auf Parallelverschiebungen dieser Formen.

Sichtzellen (oder einfache Zellen S3) liegen in der IT-Schicht. Sie sind auch für komplexere Formen unterschiedlicher Ausrichtung und Größe (Objekte) empfänglich.

Objektselektive Verkäufe (oder komplexe Zellen C3) befinden sich ebenfalls auf einer IT-Ebene. Auch sie reagieren auf Objekte unterschiedlicher Ausrichtung und Größe, aber unabhängig von deren Platzierung.

Diese mehrschichtige Umwandlung visueller Informationen ermöglicht es unserem Gehirn, ein Objekt unabhängig von seiner Lage im Bild, seiner Ausrichtung und seiner Größe zu erkennen. Die Objekterkennung (Klassifizierung) erfolgt in der nächsten Schicht des visuellen Kortex, dem präfrontalen Kortex (PFC).

 
Wie sollen wir das Projekt nennen?
 
TheXpert:
Wie sollen wir sie nennen?
Falls die Frage an mich gerichtet ist: In der Literatur werden die von mir beschriebenen Netze als hierarchische neuronale Netze bezeichnet.
 
TheXpert:
Denken Sie an das Logo :)
Die Idee ist, dass es mit dem Logo mitschwingen (sich anfreunden) sollte methaquot
 
TheXpert:
Wie sollen wir es nennen?

Meta Universal Neural Network (MUNN)

Oder haben Sie nicht den Anspruch, universell zu sein?

 
Urain:
Anspruch?
Sie tun es. Aber nicht so viel. Wahrnehmung ist Wahrnehmung. Jedes Netzwerk kann als eine Blackbox betrachtet werden, die Informationen von Wahrnehmungsorganen (Inputs) empfängt und umwandelt.
 
Künstliches Gehirn
Grund der Beschwerde: