"新神经 "是MetaTrader 5平台的一个开源神经网络引擎项目。 - 页 34

 
joo:
我将尝试与他取得联系--他消失了很久。当然,如果能有一篇关于OpenCL与MQL5的专门文章,那就更好了。特别是现在。

怎么样了?JavaDev 已经有一个多月没有上Skype了。

这是他的一段代码,演示了OpenCL 的工作原理

[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);
   }
};
 
格拉夫

怎么样了?JavaDev 已经有一个多月没有上Skype了。

我已经联系了他,JavaDev 正在关注这个话题。
 
joo:
我已经联系了他,JavaDev 正在关注这个话题。
万幸的是,该项目有希望不会夭折 :)
 

讲座1在此进行https://www.mql5.com/ru/forum/4956/page23

第2讲。信息处理的生物学方法

我将简要地离开网络中的放电原理,并简要地考虑信息的生物转化的本质。然后,我将把一切联系起来。 例如,让我们考虑视觉皮层中的信息转化。这个话题离交易很远,但它有助于引出聪明的想法。顺便说一下,许多网络,如Kohonen地图和天平自我训练方法被引入,试图为视觉皮层建模。因此,视觉信息由视网膜光感受器细胞转化为电信号,然后由视网膜神经节细胞(RGC)过滤,再通过LGN中继细胞发送到视觉皮层,而LGN中继细胞的作用仍然不甚明了。视网膜神经节细胞作为带通的空间过滤器,突出物体的轮廓。它们的工作方式与Photoshop中的边缘检测功能非常相似。我们通过物体的边界来感知世界,这是相当有趣的。在视觉皮层中,过滤后的图像要经过几个具有深奥名称和缩写的神经层。视觉信息转换有两个通道:"什么 "通道,进行物体识别,以及一个平行的 "哪里 "通道,用于定位物体和感知其运动。我们对第一个通道感兴趣,它由二维的V1、V2、V4和IT层组成,它们与视网膜平行排列(不是在空间上,而是在功能上)。这些层的结构是相当复杂的。电信号从视网膜神经节细胞传输到V1,从V1传输到V2,等等。一层的单元从上一层的单元(直接信号传播)以及它们的邻居(层内递归连接)获取它们的输入。还有一些经常性的联系,由于对其了解不多,往往被忽视。视觉皮层中的信息转换可以用以下简化形式来表示。

简单细胞S1位于V1.它们是轮廓线(物体的边界)的基本片段的过滤器,即具有不同倾斜角度、不同长度、不同极性(深色背景上的亮线、浅色背景上的暗线)和二维空间中不同位置的短线段。每个S1细胞基本上是通过一个具有一定倾斜度和长度的狭窄 "狭缝 "来 "观察 "图像的某个部分,并且只有当该部分的轮廓在倾斜度、长度和极性上与 "狭缝 "相一致时才会做出反应。

复杂细胞C1也位于V1层上。与S1简单细胞一样,它们对图像一定区域内具有一定斜度和长度的短段轮廓线有反应,但对与这些短段平行的移动不太敏感(移动不变性)。

简单细胞S2位于V2和V4层。它们是形状更复杂的空间滤波器,由两个不同斜度和长度的直段组成(如G、T、L、V、X)。他们在图像的不同位置对这些形状作出反应。

复合细胞C2(复合细胞C1)位于V2和V4层。它们也是由两个不同斜度和长度的直线段组成的更复杂形状的空间过滤器,但对这些形状的平行移动不太敏感。

视图单元(或简单单元S3)位于IT层中。它们对不同方向和大小的更复杂的形状(物体)也很敏感。

物体选择的细胞(或复杂的细胞C3)也在IT层。它们也会对不同方向和大小的物体作出反应,但与它们的位置无关。

这种视觉信息的多层转换使我们的大脑能够识别一个物体,而不管它在图像中的位置、方向和大小。 物体识别(分类)发生在视觉皮层的下一层,称为前额叶皮层(PFC)。

 
我们应该如何称呼这个项目
 
TheXpert
我们应该怎么称呼他们?
如果问题是针对我的,在文献中,我所描述的网络被称为分层神经网络
 
TheXpert
思考一下标志的问题 :)
我们的想法是,它应该与标识元宝产生共鸣(交朋友)。
 
TheXpert
我们应该叫它什么呢?

Meta Universal Neural Network (MUNN)

或者你不声称自己是普遍的?

 
Urain
声称?
你会的。但不是那么多。感知就是感知。任何网络都可以被认为是一个黑匣子,接收并转化来自感知器官(输入)的信息。
 
人工 大脑