Ich trainiere ein neuronales Faltungsnetzwerk, um Bilder bei Nebelbedingungen zu klassifizieren (3 Klassen). Für jedes der ca. 150.000 Bilder stehen mir jedoch auch vier meteorologische Variablen zur Verfügung, die bei der Vorhersage der Bildklassen hilfreich sein könnten. Ich habe mich gefragt, wie ich die meteorologischen Variablen (z. B. Temperatur, Windgeschwindigkeit) zur vorhandenen CNN-Struktur hinzufügen kann, damit sie bei der Klassifizierung hilfreich sind.
Eine Möglichkeit, die ich mir bereits vorstellen kann, besteht darin, neben dem CNN ein weiteres (kleines) Feedforward-neuronales Netz zu erstellen und dann die Ausgaben der CNN-Schichten und der verborgenen Schichten des nicht-bildgebenden neuronalen Netzes auf der dichten Schicht miteinander zu verketten.
Der zweite Weg, den ich mir vorstellen könnte, besteht darin, diese Merkmale nur mit der dichten Schicht in Kontakt zu bringen. In diesem Fall können die Nicht-Bildvariablen jedoch (glaube ich) nur lineare Vorhersagen treffen.
Gibt es andere (bessere) Möglichkeiten, um die Nicht-Bild-Features in das Modell aufzunehmen? Und welche Methode ist angesichts der Datenmenge, über die ich verfüge, empfehlenswert?
Eine andere Frage, die ich habe, ist, ob ich die Faltungsschichten während des Trainings mit diesen Nicht-Bild-Merkmalen auftauen soll oder nicht. Diese Schichten eines Resnet-18 (die auf ImageNet als vorab trainiert initialisiert wurden) wurden bereits mithilfe der Bilder feinabgestimmt. Ich vermute, dass ich sie einfrieren und nur die dichte Schicht auftauen sollte, da nur hier die Nichtbildmerkmale mit den Bildmerkmalen in Kontakt kommen (nicht früher im CNN). Wenn ich mich geirrt habe, sagen Sie es bitte!
Antworten:
Meine Lösung ist wie Ihre erste Empfehlung, jedoch mit geringfügigen Änderungen.
Sie können für diese Architektur die üblichen Kostenfunktionen verwenden.
quelle
Concatenate()
Ebenen machen?Concatenate()
oderconcatenate()
Schichten verwenden? Ich kann den Unterschied nicht erkennen