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

 
Ukrayna :

ve en önemlisi, bu mimarinin nasıl oluşturulduğunun kaynak kodu.

İki girdi, bir göstergenin değerleri mi yoksa harici biri veri sağlayacak mı?

 
yu-sha :

İki girdi, bir göstergenin değerleri mi yoksa harici biri veri sağlayacak mı?

çıktı gibi harici verileri görüntüleyebilir, dilerseniz hariç tutabilirsiniz.

PS bu XOR görevinden bir resim, klasik MLP

 
Ukrayna :

Şu anda, çılgın bir küçük düşünce atışı:

belki MQ'ya sor   Küme görev API'sı ???

Test cihazını atlayarak görevi doğrudan MQL5'ten dağıtmak için. Görev kesinlikle zor, çok sayıda kontrol yüklemeniz gerekiyor, ancak çözülebilir.

PS ne düşünüyorsunuz yegenlerim, çok yüksek sallanmadı mı? salkım elbette kutsal bir inektir, ancak sürülmesi gerekir.


Çok güzel olurdu! Ancak, burada, muhtemelen soru, bu durumda acentelere nasıl ödeme yapılacak?

 

Belki bu yüzden ?

Aksi takdirde, nöron 1, 2 ve 8'in anlamı net değildir.

 
yu-sha :

Belki bu yüzden ?

Aksi takdirde, nöron 1 ve 2'nin anlamı net değildir.

Yapabilirsin, önemli değil.
 

İlk xml dosyası: ön işlemeden önce ağ - UrainTaskPre.xml

Aynı türden çok sayıda nöron olduğunda, hata yapmak kolaydır - burada bir şablon belirledik ve önişlemci onu hazır bir ağ dosyasına genişletmeli

 < 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 >

Ardından, önişlemci <REPEAT .../>, <INCLUDE .../>, "expr:..." ikamelerini işler ve ağı alır

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 >

Aşağıda bir XML dosyasını açan, onu bir XML ağacına ayrıştıran, ondan bir sinir ağı oluşturan, girdileri başlatan ve işte Run() olan bir komut dosyasıdır.

 //+------------------------------------------------------------------+
//|                                                  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());
      }
    }
   
  }
//+------------------------------------------------------------------+

Not:

CNeuronService sınıfı "EXTERN" türündeki nöronları işler - eski zamanlardan kalma küçük bir tutarsızlık var

Alışmak düzeltmekten daha kolaydır.

Komut dosyası sonuçları:


UrainTaskPost.xml , terminalin ortak klasörüne yerleştirilmelidir, örneğin, C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common\Files

Arşivdeki dosyalar - MQL5\Include içinde

Dosyalar:
 
yu-sha :

İlk xml dosyası: ön işlemeden önce ağ - UrainTaskPre.xml

Aynı türden çok sayıda nöron olduğunda, hata yapmak kolaydır - burada bir şablon belirledik ve önişlemci bunu hazır bir ağ dosyasına genişletmeli

Ardından, önişlemci <REPEAT .../> ikamelerini işler ve ağı alır

UrainTaskPost.xml

Aşağıda bir XML dosyasını açan, onu bir XML ağacına ayrıştıran, ondan bir sinir ağı oluşturan, girdileri başlatan ve işte Run() olan bir komut dosyasıdır.

Zaten daha sıcak, şimdi dosyayı nasıl yorumlayacağınızı açıklayın.

bağlantılar oluşturmak için nereye bir şeyler yazılacağı veya bunların ayarlandığı belirtilen yere tıklayın.

 
Ukrayna :

Zaten daha sıcak, şimdi dosyayı nasıl yorumlayacağınızı açıklayın.

bağlantılar oluşturmak için nereye bir şeyler yazılacağı veya bunların ayarlandığı belirtilen yere tıklayın.

1) Her nöronun benzersiz bir adı olmalıdır, örneğin NEURON:1.HID:0

Adından bunun HID: 0 katmanının 1. nöronu olduğunu anlayabilirsiniz.

2) Bağlantılar (bağlantılar), adresleme için nöron adlarını + ağırlıkları kullanır

3) her nöron sınıfı sanal bool Init'i (CXmlElement *aXmlElement, CNet *aNet ) geçersiz kılabilir (ve yapmalıdır) ve kendi parametre gereksinimlerine göre bir XML öğesinden yüklenebilir

not

XML dosyaları Excel yerine Not Defteri ile düzenlenmelidir.

 
yu-sha :

1) Her nöronun benzersiz bir adı olmalıdır, örneğin NEURON:1.HID:0

Adından bunun HID: 0 katmanının 1. nöronu olduğunu anlayabilirsiniz.

2) Bağlantılar (bağlantılar), adresleme için nöron adlarını + ağırlıkları kullanır

3) her nöron sınıfı sanal bool Init'i (CXmlElement *aXmlElement, CNet *aNet ) geçersiz kılabilir (ve yapmalıdır) ve kendi parametre gereksinimlerine göre bir XML öğesinden yüklenebilir

not

XML dosyaları Excel yerine Not Defteri ile düzenlenebilir.

Evet, onun sevgilisi, Excel ve Word ve bir not defterim var, peki, belli değil, buhar olacak, hala iki nöron ve 200-2000 ve her biri 100-200 bağlantılı olacak.

Zaten bir iplik gibi yapılmışlarsa, grafiksel olarak uygun veya görüntülenebilir ve hatta daha iyi grafiksel olarak düzenlenebilir.

bundan daha uygun hale getirmek için zaten bir şey yaptıysanız: aldığımız sütunlar, dağıttığımız satırlar

[количество слоёв] 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
 
Ukrayna :

Evet, onun sevgilisi, Excel ve Word ve bir not defterim var, peki, belli değil, buhar olacak, hala iki nöron ve 200-2000 ve her biri 100-200 bağlantılı olacak.

Zaten bir iplik gibi yapılmışlarsa, grafiksel olarak uygun veya görüntülenebilir ve hatta daha iyi grafiksel olarak düzenlenebilir.

Ön İşlemci bunun içindir

En az 2 nöron, en az 100, dosya boyutu aynı

Peki, grafiksel olarak kime, bu yüzden kimse müdahale etmiyor - bir GUI yazıyoruz ve kullanıyoruz