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

 
우크라이나 :

그리고 가장 중요한 것은 이 아키텍처가 어떻게 만들어졌는지에 대한 소스 코드입니다.

두 입력은 일부 지표의 값입니까 아니면 외부의 누군가가 데이터를 제공합니까?

 
유샤 :

두 입력은 일부 지표의 값입니까 아니면 외부의 누군가가 데이터를 제공합니까?

원하는 경우 출력과 같은 외부 데이터를 표시하고 제외할 수 있습니다.

추신: 이것은 XOR 작업, 클래식 MLP의 사진입니다.

 
우크라이나 :

바로 지금, 미친 아이디어 샷:

어쩌면 MQ에게 물어봐   클러스터 작업 API ???

테스터를 우회하는 작업을 MQL5에서 직접 배포합니다. 작업은 확실히 어렵습니다. 많은 검사를 설치해야 하지만 해결할 수 있습니다.

위협, 형제들, 그리 높이 휘두르지 않을 것 같습니까? 클러스터는 물론 신성한 암소이지만 쟁기질해야 합니다.


그것은 매우 멋질 것입니다! 그러나 여기서 아마도 질문이 있을 것입니다. 이 경우 대리인은 어떻게 지불합니까?

 

어쩌면 그렇게?

그렇지 않으면 뉴런 1, 2 및 8의 의미가 명확하지 않습니다.

 
유샤 :

어쩌면 그렇게?

그렇지 않으면 뉴런 1과 2의 의미가 명확하지 않습니다.

글쎄, 당신은 할 수 있습니다, 그것은 중요하지 않습니다.
 

첫 번째 xml 파일: 전처리 전 네트워크 - UrainTaskPre.xml

동일한 유형의 뉴런이 많으면 실수하기 쉽습니다. 여기에서 템플릿을 설정하고 전처리기가 이를 기성 네트워크 파일로 확장해야 합니다.

 < ROOT >

     < NET >

                 < LAYER CLASS= "EXTERN" NAME= "INPUT" >
                         < NEURON NAME= "NEURON:%ID%.INPUT" VALUE= "0.0" >
                                 < REPEAT FOR= "%ID%" FROM= "1" TO= "2" />
                         </ NEURON >
                 </ LAYER >

                 < LAYER CLASS= "TANH" NAME= "HID:0" >
                         < NEURON NAME= "NEURON:%ID%.HID:0" BIAS= "0.0" >
                                 < REPEAT FOR= "%ID%" FROM= "1" TO= "2" />
                                 < LINK TO= "expr:.+\.INPUT$" WEIGHT= "0.0" />
                         </ NEURON >
                 </ LAYER >

                 < LAYER CLASS= "TANH" NAME= "OUT" >
                         < NEURON NAME= "OUT" BIAS="0.0" >
                                 < LINK TO= "expr:.+\.HID:0$" WEIGHT= "0.0" />
                         </ NEURON >
                 </ LAYER >

     </ NET >

</ ROOT >

다음으로 전처리기는 대체 <REPEAT .../>, <INCLUDE .../>, "expr:..." 을 처리하고 네트워크

UrainTaskPost.xml

 < ROOT >
     < NET >
         < LAYER CLASS= "EXTERN" NAME= "INPUT" >
             < NEURON NAME= "NEURON:1.INPUT" VALUE= "0.0" />
             < NEURON NAME= "NEURON:2.INPUT" VALUE= "0.0" />
         </ LAYER >
         < LAYER CLASS= "TANH" NAME= "HID:0" >
             < NEURON NAME= "NEURON:1.HID:0" BIAS= "0.0" >
                 < LINK TO= "NEURON:1.INPUT" WEIGHT= "0.0" />
                 < LINK TO= "NEURON:2.INPUT" WEIGHT= "0.0" />
             </ NEURON >
             < NEURON NAME= "NEURON:2.HID:0" BIAS= "0.0" >
                 < LINK TO= "NEURON:1.INPUT" WEIGHT= "0.0" />
                 < LINK TO= "NEURON:2.INPUT" WEIGHT= "0.0" />
             </ NEURON >
         </ LAYER >
         < LAYER CLASS= "TANH" NAME= "OUT" >
             < NEURON NAME= "OUT" BIAS="0.0" >
                 < LINK TO= "NEURON:1.HID:0" WEIGHT= "0.0" />
                 < LINK TO= "NEURON:2.HID:0" WEIGHT= "0.0" />
             </ NEURON >
         </ LAYER >
     </ NET >
</ ROOT >

다음은 XML 파일을 열고 XML 트리로 구문 분석하고 이 파일에서 신경망을 만들고 입력을 초기화하는 스크립트입니다. 여기에서 Run()입니다.

 //+------------------------------------------------------------------+
//|                                                  UrainScript.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"

#include <Cuda\Base.mqh>

CXmlDocument xmlDoc;

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
     string err;
    
     // Создаем дерево XML
     if (xmlDoc.CreateFromFile( "UrainTaskPost.xml" ,err))
    {
       Print ( "Root:" ,xmlDoc.FDocumentElement.GetName());
      CXmlElement * xmlNet = xmlDoc.FDocumentElement.GetChild( 0 );

       // Печатаем вложенные уровни
       for ( int j= 0 ; j<xmlNet.GetChildCount(); j++)
      {
        CXmlElement * xmlLayer = xmlNet.GetChild(j);
         Print ( "Element #" ,j, ", CLASS=" ,xmlLayer.GetAttributeValue( "CLASS" ), ", NAME=" ,xmlLayer.GetAttributeValue( "NAME" ));
      }
      
       // Строим нейросеть из дерева XML
      CNet net;
       if (net.LoadFrom(xmlNet))
      {
        ((CNeuronService*)(net.GetNeuron( "NEURON:1.INPUT" ))).SetValue( 0.1234 f);
        ((CNeuronService*)(net.GetNeuron( "NEURON:2.INPUT" ))).SetValue( 0.1234 f);
        net.Run();
         Print ( "OUT=" ,net.GetNeuron( "OUT" ).GetValue());
      }
    }
   
  }
//+------------------------------------------------------------------+

메모:

CNeuronService 클래스는 "EXTERN" 유형의 뉴런을 처리합니다. 고대부터 약간의 불일치가 있었습니다.

고치는 것보다 익숙해지는 것이 더 쉽습니다.

스크립트 결과:


UrainTaskPost.xml은 터미널의 공통 폴더에 있어야 합니다(예: C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files).

아카이브의 파일 - MQL5\Include

파일:
 
유샤 :

첫 번째 xml 파일: 전처리 전 네트워크 - UrainTaskPre.xml

동일한 유형의 뉴런이 많으면 실수하기 쉽습니다. 여기에서 템플릿을 설정하고 전처리기가 이를 기성 네트워크 파일로 확장해야 합니다.

다음으로 전처리기는 대체 <REPEAT .../>를 처리하고 네트워크

UrainTaskPost.xml

다음은 XML 파일을 열고 XML 트리로 구문 분석하고 이 파일에서 신경망을 만들고 입력을 초기화하는 스크립트입니다. 여기에서 Run()입니다.

이미 따뜻해지면 이제 파일을 해석하는 방법을 설명합니다.

링크를 생성하기 위해 무언가를 작성하거나 링크가 설정되었다고 표시된 곳을 클릭하십시오.

 
우크라이나 :

이미 따뜻해지면 이제 파일을 해석하는 방법을 설명합니다.

링크를 생성하기 위해 무언가를 작성하거나 링크가 설정되었다고 표시된 곳을 클릭하십시오.

1) 각 뉴런에는 고유한 이름이 있어야 합니다(예 : NEURON:1.HID:0).

이름에서 알 수 있듯이 HID: 0 레이어의 첫 번째 뉴런입니다.

2) 링크(연결)는 주소 지정을 위해 뉴런 이름 + 가중치를 사용합니다.

3) 각 뉴런 클래스는 가상 bool Init(CXmlElement *aXmlElement, CNet *aNet) 를 재정의하고 고유한 매개변수 요구 사항에 따라 XML 요소에서 로드할 수 있습니다.

추신

XML 파일은 Excel이 아닌 메모장으로 편집해야 합니다.

 
유샤 :

1) 각 뉴런에는 고유한 이름이 있어야 합니다(예 : NEURON:1.HID:0).

이름에서 알 수 있듯이 HID: 0 레이어의 첫 번째 뉴런입니다.

2) 링크(연결)는 주소 지정을 위해 뉴런 이름 + 가중치를 사용합니다.

3) 각 뉴런 클래스는 가상 bool Init(CXmlElement *aXmlElement, CNet *aNet) 를 재정의하고 고유한 매개변수 요구 사항에 따라 XML 요소에서 로드할 수 있습니다.

추신

XML 파일은 Excel이 아닌 메모장으로 편집할 수 있습니다.

예, 저는 그의 연인과 Excel, Word 및 메모장이 있습니다. 글쎄요, 확실하지 않습니다. 증기가 있을 것입니다. 여전히 2개의 뉴런이고 200-2000개와 각각 100-200개의 연결이 있을 것입니다.

그것들이 이미 실처럼 만들어졌다면, 그래픽적으로 편리하거나 표시되며, 그래픽적으로 더 잘 편집될 수 있습니다.

이보다 더 편리하게 만들기 위해 이미 무언가를 하고 있다면: 우리가 얻는 열, 우리가 배포하는 행

[количество слоёв] 3
[тип 0 слоя] input [количество нейронов 0 слой] 2
[тип 1 слоя]mlp  [количество нейронов 1 слой] 2
[тип 2 слоя]mlp  [количество нейронов 2 слой] 1
   0 1 2 3 4
 -----------
0| 0 0 1 1 0
1| 0 0 1 1 0
2| 0 0 0 0 1
3| 0 0 0 0 1
4| 0 0 0 0 0
 
우크라이나 :

예, 저는 그의 연인과 Excel, Word 및 메모장이 있습니다. 글쎄요, 확실하지 않습니다. 증기가 있을 것입니다. 여전히 2개의 뉴런이고 200-2000개와 각각 100-200개의 연결이 있을 것입니다.

그것들이 이미 실처럼 만들어졌다면, 그래픽적으로 편리하거나 표시되며, 그래픽적으로 더 잘 편집될 수 있습니다.

전처리기는 이를 위한 것입니다.

2개 이상의 뉴런, 100개 이상, 파일 크기는 동일

글쎄, 그리고 누구에게 그래픽으로, 그래서 아무도 방해하지 않습니다 - 우리는 GUI를 작성하고 사용합니다