"New Neural "は、MetaTrader 5プラットフォーム用のオープンソース・ニューラルネットワークエンジンプロジェクトです。 - ページ 72

 
ウラン です。

そして最も重要なのは、このアーキテクチャがどのように作られたかというソースコードです。

2つの入力は、何らかのインジケータの値ですか、それとも外部の誰かがデータを供給するのですか?

 
yu-sha さん。

2つの入力は、インジケーターの値ですか、それとも外部の誰かがデータを提供するのですか?

出力のような外部データは、任意に表示・除外することが可能です。

ZS これはXORタスクからの図面です。

 
ウラン です。

今、私は迷いが生じました。

MQ APIにクラスタのタスクを設定 するように依頼するのはどうでしょうか?

を使えば、テスターを介さずに直接MQL5からタスクを配布することができます。確かに課題は複雑で、設定すべきチェック項目も多いのですが、何とかなるものなのです。

あなたは兄弟が、あまりにも高い掃引ではないと思いますか? クラスタ確かに神聖な牛が、我々は懸命に働かなければならない。


とてもクールでしょう。し かし、問題は、この場合、エージェントの報酬はどうなるのか、ということだ。

 

これはどうでしょう?

それ以外のニューロン1、2、8の意味は不明です。

 
yu-sha さん。

これはどうでしょう?

そうでなければ、ニューロン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 SettingsAll UsersApplication Data ↪MetaQuotes↩Terminal゙CommonFiles)に格納してください。

アーカイブからMQL5Includeへのファイル。

ファイル:
 
yu-sha さん。

最初のxmlファイル:前処理前のネットワーク -UrainTaskPre.xml

同じタイプのニューロンが多数ある場合、間違いを犯しやすい。ここでは、テンプレートを指定し、プリプロセッサがそれを既製のネットワークファイルに展開する。

さらにプリプロセッサは<REPEAT .../>の置換を処理し、ネットワークを得ることができます。

UrainTaskPost.xml

以下は、XMLファイルを開き、それをXMLツリーにパースし、そこからニューラルネットワークを作成し、入力を初期化してRun()するスクリプトです。

暖かくなってきたので、今度はファイルの解釈の仕方を説明します。

どこに何を書けばリンクができるのか、あるいは設定されていると書いてあるところをつつくのか。

 
ウラン です。

暖かくなってきたので、今度はファイルの解釈の仕方を説明してください。

どこに何を書けば接続できるのか、あるいはどこに設定されていると書いてあるのか、ヒントがある。

1) 各ニューロンには、NEURON:1.HID:0 のようなユニークな名前を付ける必要があります。

名称は、レイヤーHID:0の1番目のニューロンであることを示します。

2) リンクはニューロン名+重みを用いてアドレス指定する

3) 各ニューロンクラスは、仮想bool Init (CXmlElement *aXmlElement, CNet *aNet) をオーバーライドでき、そのパラメータ要件に従ってXML要素からロードする必要があります。

追伸

XMLファイルはExcelで編集するよりもメモ帳で編集した方が良いですよ ))

 
yu-sha さん。

1) 各ニューロンには、NEURON:1.HID:0 のようなユニークな名前を付ける必要があります。

その名の通り、HID:0層の1番目のニューロンです

2) リンクはニューロン名+重みをアドレス指定に使う

3) 各ニューロンクラスは、仮想bool Init (CXmlElement *aXmlElement, CNet *aNet) をオーバーライドでき、そのパラメータ要件に従ってXML要素からロードする必要があります。

追伸

XMLファイルはExcelで編集するよりもメモ帳で編集した方が良いですよ ))

はい、エクセルとワードとメモ帳の両方で編集できるのですが、当たり前ですが、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
 
ウライン

エクセルもワードもメモ帳も使いましたが、わからない、ぐちゃぐちゃ、神経細胞2つで200~2000個、それぞれ100~200個の接続があることになります。

せっかくいじるのであれば、グラフィカルに使いやすい、表示しやすい、さらに言えばグラフィカルに編集しやすいものであってほしい。

そのためのPreProcessorです。

ニューロンが2個でも100個でも、ファイルサイズは 同じです。

また、グラフィカルに編集したい場合は、誰も困らないので、GUIを記述して