Diskussion zum Artikel "Neuronale Netze leicht gemacht" - Seite 5

 

Ein interessanter Film, der ein paar Jahre zuvor gedreht wurde. Er heißt Find 7 Differences :-))))




 
Boris Egorov:
Bitte geben Sie ein Beispiel ... es ist nicht ganz klar, wie man es benutzt
Boris Egorov:

Sie verstehen nicht, ich bin vertraut mit neuronalen Netzen

Wenn es keine Logik gibt, verstehe ich das nicht.

Wenn Sie sich auskennen, wissen Sie, wie man es benutzt.

Aber wenn es nur eine Beschwerde über den Artikel in dieser Form ist, dann stimme ich zu.

 
Stanislav Korotky:

Wenn es keine Logik gibt, verstehe ich es nicht.

Wenn man sich damit auskennt, weiß man auch, wie man es benutzt.

Aber wenn es nur eine Beschwerde über den Artikel in dieser Form ist, dann stimme ich zu.

Ja genau auf den Artikel, trotz der Tatsache, dass der Artikel ist wirklich cool, es ist nur so, dass nicht jeder weiß, über sie und ich persönlich bin zu faul, um einfach nehmen und versuchen Sie es - es wird so viel Zeit fressen und ohne Garantie für das Ergebnis und mit dem obligatorischen Schritt auf kindisch Harken, deshalb möchte ich wissen, "wie es funktioniert" - im Sinne der Handelsergebnisse zumindest auf einem einfachen Modell und die Geschwindigkeit der Ausbildung dieses Modells auf bestimmte Ausrüstung, ich verstehe, dass, wenn der Autor diese titanic Arbeit geschrieben hat, hat er sicherlich zumindest einige berechnete Modelle und es wäre möglich, zumindest einige Ergebnisse zu ziehen.

 
Stanislav Korotky:

Wenn Sie damit vertraut sind, wissen Sie, wie man es benutzt.

Das ist keine sichere Sache. ..... Es gibt eine Menge Eigenheiten.

 
Boris Egorov:

und das ist keine Tatsache .... Hier gibt es noch einige Besonderheiten.

Ich gab einige Links (und Sie können sie immer noch finden) mit Implementierungen des gleichen NS mit Beispielen der Verwendung. Dies ist nicht der erste Artikel zu diesem Thema, es gab schon ausführlichere.

 
Stanislav Korotky:

Ich gab einige Links (und Sie können sie immer noch finden) mit Implementierungen der gleichen NS mit Beispielen der Verwendung. Dies ist nicht der erste Artikel zu diesem Thema, es gab schon ausführlichere Artikel.

Ich möchte mich nicht wiederholen, können Sie mir sagen, ob es einen Zusammenhang mit dem Prinzip "5 why" gibt?

Und die Antwort des Autors ist wahrscheinlich nicht bald zu warten, bis er alle die Gebühr ausgibt und kehrt in das Forum :)

 

Autor, bitte überprüfen Sie die Methode bool CLayer::CreateElement(const uint index).

Nach dem ersten Hinzufügen eines Elements (Neuron) haben Sie m_data_total=0. Das ist nicht in Ordnung.

Sie sollten zumindest die obige Methode mit einer ähnlichen Methode vergleichen: bool CArrayObj::Add(CObject *element).

Haben Sie ein Gewissen, solch ungeprüften Code zu posten oder was?

Ich wollte es nicht sagen, aber ich kann es nicht mehr.

Der Autor hat ein Beispiel aus dem Video-Tutorial portiert, auf das ich hier verlinkt habe. Daran ist nichts auszusetzen, aber es würde sich zumindest lohnen, über die Quelle des Basiscodes zu schreiben.

Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien.

Diskussion des Artikels "Neuronale Netze - es ist ganz einfach".

Boris Egorov, 2020.01.27 04:56 Uhr

Ja genau auf den Artikel, trotz der Tatsache, dass der Artikel ist wirklich cool, nur nicht jeder versteht es und hier bin ich persönlich faul, um einfach zu nehmen und zu versuchen - es wird so viel Zeit fressen und ohne Garantie für das Ergebnis und mit dem obligatorischen Schritt auf Baby Harken, so möchte ich wissen, "wie es funktioniert" - im Sinne der Ergebnisse des Handels zumindest auf einem einfachen Modell und die Geschwindigkeit der Ausbildung dieses Modells auf bestimmte Geräte, ich verstehe, wenn der Autor schrieb diese titanic Arbeit, dann hat er sicherlich zumindest einige Modelle berechnet und könnte zumindest einige rezu geworfen werden

Es gibt ein Beispiel in dem Video-Tutorial. Nur der Autor des Artikels beschlossen, nicht zu stören. Hier sind die Quellen.
 

Wenn man sich das Original ansieht, hat es diese Methode:

void Net::feedForward(const vector<double> &inputVals)
{
    assert(inputVals.size() == m_layers[0].size() - 1);

    // Zuweisung (Verriegelung) der Eingangswerte an die Eingangsneuronen
    for (unsigned i = 0; i < inputVals.size(); ++i) {
        m_layers[0][i].setOutputVal(inputVals[i]);
    }

    // Vorwärtspropagieren
    for (unsigned layerNum = 1; layerNum < m_layers.size(); ++layerNum) {
        Layer &prevLayer = m_layers[layerNum - 1];
        for (unsigned n = 0; n < m_layers[layerNum].size() - 1; ++n) {
            m_layers[layerNum][n].feedForward(prevLayer);
        }
    }
}

analog im Artikel:

void CNet::feedForward(const CArrayDouble *inputVals)
  {
   if(CheckPointer(inputVals)==POINTER_INVALID)
      return;
//---
   CLayer *Layer=layers.At(0);
   if(CheckPointer(Layer)==POINTER_INVALID)
     {
      return;
     }
   int total=inputVals.Total();
   if(total!=Layer.Total()-1)
      return;
//---
   for(int i=0; i<total && !IsStopped(); i++) 
     {
      CNeuron *neuron=Layer.At(i);
      neuron.setOutputVal(inputVals.At(i));
     }
//---
   total=layers.Total();
   for(int layerNum=1; layerNum<total && !IsStopped(); layerNum++) 
     {
      CArrayObj *prevLayer = layers.At(layerNum - 1);
      CArrayObj *currLayer = layers.At(layerNum);
      int t=currLayer.Total()-1;
      for(int n=0; n<t && !IsStopped(); n++) 
        {
         CNeuron *neuron=currLayer.At(n);
         neuron.feedForward(prevLayer);
        }
     }
  }

Die gelb markierte Zeile. Und in dieser Form funktioniert die Methode nicht. Denn in der Quelle fügt sie ein weiteres Bias-Neuron (Bias-Neuron) hinzu.

Net::Net(const vector<unsigned> &topology)
{
    unsigned numLayers = topology.size();
    for (unsigned layerNum = 0; layerNum < numLayers; ++layerNum) {
        m_layers.push_back(Layer());
        unsigned numOutputs = layerNum == topology.size() - 1 ? 0 : topology[layerNum + 1];

        // Wir haben eine neue Schicht, die wir nun mit Neuronen füllen, und
        // Hinzufügen eines Bias-Neurons in jeder Schicht.
        for (unsigned neuronNum = 0; neuronNum <=  topology[layerNum]; ++neuronNum) {
            m_layers.back().push_back(Neuron(numOutputs, neuronNum));
            cout << "Made a Neuron!" << endl;
        }

        // Zwingt die Ausgabe des Bias-Knotens auf 1,0 (es war das letzte Neuron, das in dieser Schicht geschoben wurde):
        m_layers.back().back().setOutputVal(1.0);
    }
}
 
Aleksey Mavrin:

Wenn ich mir das Ganze ansehe, möchte ich mich nicht wiederholen. Können Sie mir sagen, ob es da einen Zusammenhang mit dem "5 why's"-Prinzip gibt?

Nein. Und tun Sie es auch nicht, denn das stammt aus einer anderen Oper.

 
Denis Kirichenko:

Autor, bitte überprüfen Sie die Methode bool CLayer::CreateElement(const uint index).

Nach dem ersten Hinzufügen eines Elements (Neurons) haben Sie m_data_total=0. Das ist nicht richtig.

Sie sollten zumindest die obige Methode mit einer ähnlichen Methode vergleichen: bool CArrayObj::Add(CObject *element)...

Derselbe Unsinn mit der Methode CArrayCon::CreateElement(const int index): Nach dem ersten hinzugefügten Element ist m_data_total=0.