"New Neural", MetaTrader 5 platformu için bir sinir ağı motorunun Açık Kaynak projesidir. - sayfa 34

 
joo :
Ona ulaşmaya çalışacağım - uzun süre ortadan kaybolur. Elbette MQL5 ile OpenCL konusunda bir makale çok iyi olurdu. Özellikle şimdi.

Nasıl gidiyor? JavaDev bir aydır Skype'ta yok.

Bu, OpenCL'nin nasıl çalıştığını gösteren, ondan bir kod parçasıdır.

[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);
   }
};
 
Grafik :

Nasıl gidiyor? JavaDev bir aydır Skype'ta yok.

Kendisiyle iletişime geçtim, JavaDev konuyu takip ediyor.
 
joo :
Kendisiyle iletişime geçtim, JavaDev konuyu takip ediyor.
Yaşasın. projenin ölmeyeceğine dair bir umut vardı :)
 

Ders 1 burada https://www.mql5.com/ru/forum/4956/page23

Ders 2. Biyolojik bilgi dönüşüm yöntemleri

Ağlarda seyreklik ilkesini kısaca bırakacağım ve kısaca bilginin biyolojik dönüşümünün özünü ele alacağım. Sonra her şeyi birbirine bağlayacağım. Örneğin, görsel korteksteki bilginin dönüşümünü düşünün. Bu konu ticaretten uzak, ancak akıllı düşünceler çizmeye yardımcı oluyor. Bu arada, görsel korteksi modelleme girişimlerinde Kohonen haritaları ve ağırlık kendi kendine öğrenme yöntemleri gibi birçok ağ tanıtıldı. Böylece görsel bilgi, retina fotoreseptör hücreleri tarafından elektrik sinyallerine dönüştürülür, daha sonra retinal ganglion hücreleri (RGC'ler) tarafından filtrelenir ve daha sonra amacı hala tam olarak anlaşılamayan LGN röle hücreleri aracılığıyla görsel kortekse gönderilir. Retinanın ganglion hücreleri, nesnelerin dış hatlarını vurgulayan bant geçiren uzaysal filtreler gibi davranır. Çalışmalarının prensibi Photoshop'taki kenar algılama işlevine çok benzer. Dünyayı nesnelerin sınırları aracılığıyla algılamamız oldukça ilginç. Görsel kortekste, filtrelenmiş görüntü, şifreli isimler ve kısaltmalarla birkaç sinir katmanından geçer. Görsel bilgileri dönüştürmek için iki kanal vardır: nesneleri tanıyan "ne" kanalı ve nesneleri yerelleştirmek ve hareketlerini algılamak için paralel "nerede" kanalı. Retinaya paralel olarak düzenlenmiş (uzayda değil, işlevsel olarak) iki boyutlu V1, V2, V4 ve IT katmanlarından oluşan ilk kanalla ilgileniyoruz. Bu katmanların yapısı oldukça karmaşıktır. Elektrik sinyalleri retina ganglion hücrelerinden V1'e, V1'den V2'ye vb. iletilir. Bir katmandaki hücreler, girdilerini önceki katmandaki hücrelerden (ileri sinyal yayılımı) ve komşularından (katman içi tekrarlayan bağlantılar) alır. Ayrıca, zayıf anlayışları nedeniyle genellikle ihmal edilen geri bildirim döngüleri de vardır. Bilginin görsel korteksteki dönüşümü, aşağıdaki basitleştirilmiş biçimde grafiksel olarak temsil edilebilir:

Basit hücreler S1 (basit hücreler S1) V1'de bulunur. Bunlar, temel kontur fragmanlarının (nesne sınırları), yani farklı açılara, farklı uzunluklara, farklı polaritelere (koyu bir arka plan üzerinde açık çizgi, açık bir arka plan üzerinde koyu çizgi) sahip kısa çizgi parçalarının ve iki farklı konumdaki farklı konumların filtreleridir. boyutlu uzay. Her S1 hücresi, belirli bir eğim ve uzunluktaki dar bir "yarık" yoluyla görüntünün belirli bir alanına esasen "bakar" ve yalnızca bu alandaki kontur "yarık" ile eğim, uzunluk ve polarite açısından eşleştiğinde tepki verir. .

Karmaşık hücreler C1 (karmaşık hücreler C1) de V1 katmanında bulunur. Basit S1 hücreleri gibi, görüntünün belirli bir alanında belirli bir eğim ve uzunluktaki kısa kontur segmentlerine tepki verirler, ancak bu segmentlerin paralel kaymalarına (vardiya değişmezliği) daha az duyarlıdırlar.

Basit hücreler S2 (basit hücreler S2), V2 ve V4 katmanlarında bulunur. Farklı eğim ve uzunluklara sahip iki düz bölümden oluşan daha karmaşık şekillerin mekansal filtreleridir (örneğin, Г, T, L, V, X). Bu şekillere görüntünün farklı yerlerinde tepki verirler.

Karmaşık hücreler C2 (karmaşık hücreler C1), V2 ve V4 katmanlarında bulunur. Aynı zamanda, farklı eğim ve uzunluklarda iki düz parçadan oluşan daha karmaşık figürlerin uzamsal filtrelerini temsil ederler, ancak bu figürlerin paralel kaymalarına daha az duyarlıdırlar.

Görünüm hücreleri (veya basit hücreler S3) BT katmanındadır. Farklı yönlerde ve boyutlarda (nesneler) daha da karmaşık şekillere yanıt verirler.

Nesne seçici satışlar (veya karmaşık hücreler C3) de BT katmanında yer alır. Ayrıca, konumlarından bağımsız olarak, farklı yön ve boyutlardaki nesnelere de yanıt verirler.

Görsel bilginin böylesine çok katmanlı bir dönüşümü, beynimizin görüntüdeki konumu, yönü ve boyutu ne olursa olsun bir nesneyi tanımasını sağlar. Bir nesnenin tanınması (sınıflandırılması), prefrontal korteks (PFC) adı verilen görsel korteksin bir sonraki katmanında gerçekleştirilir.

 
Projenin adını ne koyalım?
 
TheXpert :
Nasıl arayacağız?
Soru bana ise, o zaman literatürde tarif ettiğim ağlara hiyerarşik sinir ağları denir.
 
TheXpert :
Ve logoyu düşünüyorsun :)
Teorik olarak, metaquotes logosu ile yankılanması (arkadaş olması) gereklidir.
 
TheXpert :
Nasıl arayacağız?

Meta Evrensel Sinir Ağı (MUNN)

Yoksa evrensellik için başvurmuyor musunuz?

 
Ukrayna :
numara yapmak?
Rol yapıyorsun. Ama çok fazla değil. Algı algıdır. Herhangi bir ağ, algı organlarından (girdiler) bilgi alan ve dönüştüren bir kara kutu olarak temsil edilebilir.
 
yapay beyin