"New Neural"은 MetaTrader 5 플랫폼용 신경망 엔진의 오픈 소스 프로젝트입니다. - 페이지 34

 
:
나는 그에게 연락하려고 노력할 것입니다 - 오랫동안 사라집니다. 물론 MQL5가 포함된 OpenCL 주제에 대한 기사는 매우 좋습니다. 특히 지금.

어떻게 진행되고 있나요? 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 는 주제를 따르고 있습니다.
 
:
나는 그에게 연락했고 JavaDev 는 주제를 따르고 있습니다.
만세. 프로젝트가 죽지 않을 것이라는 희망이있었습니다 :)
 

강의 1은 여기 https://www.mql5.com/ru/forum/4956/page23

강의 2. 정보변환의 생물학적 방법

나는 네트워크의 희소성의 원칙을 간단히 떠나 정보의 생물학적 변환의 본질을 간략하게 고려할 것입니다. 그럼 내가 다 묶어줄게. 예를 들어, 시각 피질에서 정보의 변환을 고려하십시오. 이 주제는 거래와 거리가 멀지 만 현명한 생각을 그리는 데 도움이됩니다. 덧붙여서, 코호넨 지도(Kohonen maps) 및 가중치 자가 학습(weight self-learning) 방법과 같은 많은 네트워크가 시각 피질을 모델링하려는 시도로 도입되었습니다. 따라서 시각 정보는 망막 광수용기 세포에 의해 전기 신호로 변환된 다음 망막 신경절 세포(RGC)에 의해 필터링된 다음 LGN 중계 세포를 통해 시각 피질로 전송되는데, 그 목적은 아직 잘 알려져 있지 않습니다. 망막의 신경절 세포는 대역통과 공간 필터 역할을 하여 물체의 윤곽을 강조합니다. 그들의 작업 원리는 Photoshop의 가장자리 감지 기능과 매우 유사합니다. 우리가 사물의 경계를 통해 세상을 인식한다는 것은 매우 흥미롭습니다. 시각 피질에서 필터링된 이미지는 수수께끼 같은 이름과 약어가 있는 여러 신경층을 통과합니다. 시각 정보를 변환하기 위한 두 가지 채널이 있습니다. 물체를 인식하는 "무엇" 채널과 물체의 위치를 파악하고 물체의 움직임을 인식하기 위한 병렬 "어디서" 채널입니다. 우리는 망막과 평행하게 구성된 2차원 레이어 V1, V2, V4 및 IT로 구성된 첫 번째 채널에 관심이 있습니다(공간이 아니라 기능적으로). 이 레이어의 구조는 매우 복잡합니다. 전기 신호는 망막 신경절 세포에서 V1으로, V1에서 V2 등으로 전달됩니다. 한 계층의 셀은 이전 계층의 셀(순방향 신호 전파)과 이웃(계층 내 순환 연결)의 입력을 받습니다. 또한 이해 부족으로 인해 종종 무시되는 피드백 루프도 있습니다. 시각 피질의 정보 변환은 다음과 같은 단순화된 형태로 그래픽으로 나타낼 수 있습니다.

단순 셀 S1(단순 셀 S1)은 V1에 있습니다. 그것들은 등고선(물체 경계)의 기본 조각, 즉 다른 각도, 다른 길이, 다른 극성(어두운 배경의 밝은 선, 밝은 배경의 어두운 선) 및 두 개의 다른 위치를 가진 짧은 선분의 필터입니다. 차원 공간. 각 S1 셀은 기본적으로 특정 기울기와 길이의 좁은 "슬릿"을 통해 이미지의 특정 영역을 "보고" 이 영역의 윤곽이 "슬릿"과 기울기, 길이 및 극성이 일치하는 경우에만 반응합니다. .

복합 셀 C1(복합 셀 C1)도 V1 레이어에 있습니다. 그들은 단순한 S1 세포와 마찬가지로 이미지의 특정 영역에서 특정 기울기와 길이의 윤곽선의 짧은 부분에 반응하지만 이러한 부분의 평행 이동(이동 불변성)에 덜 민감합니다.

단순 셀 S2(단순 셀 S2)는 레이어 V2 및 V4에 있습니다. 기울기와 길이가 다른 두 개의 직선 세그먼트(예: Г, T, L, V, X)로 구성된 보다 복잡한 그림의 공간 필터입니다. 그들은 이미지의 다른 위치에서 이러한 모양에 반응합니다.

복합 셀 C2(복합 셀 C1)는 레이어 V2 및 V4에 있습니다. 또한 기울기와 길이가 다른 두 개의 직선 세그먼트로 구성된 보다 복잡한 그림의 공간 필터를 나타내지만 이러한 그림의 평행 이동에 덜 민감합니다.

뷰 셀(또는 단순 셀 S3)은 IT 계층에 있습니다. 다른 방향과 크기(객체)의 훨씬 더 복잡한 모양에 반응합니다.

개체 선택 판매(또는 복잡한 셀 C3)도 IT 계층에 있습니다. 그들은 또한 위치에 관계없이 방향과 크기가 다른 물체에 반응합니다.

이러한 시각 정보의 다층적 변환을 통해 우리의 뇌는 이미지에서의 위치, 방향 및 크기에 관계없이 대상을 인식할 수 있습니다. 물체의 인식(분류)은 전전두엽 피질(PFC)이라고 하는 시각 피질의 다음 층에서 수행됩니다.

 
프로젝트 이름을 무엇으로 지정할까요?
 
더엑스퍼트 :
어떻게 부를까요?
질문이 저를 위한 것이라면 문헌에서 제가 설명한 네트워크를 계층적 신경망이라고 합니다.
 
더엑스퍼트 :
그리고 당신은 로고를 생각합니다 :)
이론적으로 메타따옴표 로고와 함께 (친구가) 되야 합니다.
 
더엑스퍼트 :
어떻게 부를까요?

메타 범용 신경망(MUNN)

아니면 보편성을 신청하지 않습니까?

 
우크라이나 :
인 척하다?
당신은 척. 하지만 그렇게 많지는 않습니다. 지각은 지각입니다. 모든 네트워크는 지각 기관(입력)에서 정보를 수신하고 변환하는 블랙박스로 나타낼 수 있습니다.
 
인공