2017-08-21 2 views
0

Ich möchte verschiedene Bilder z. Katzen und Hunde. Dafür möchte ich ein allgemeines Netzwerk "A" trainieren, das nur klassifiziert, ob die Eingabe eine Katze oder ein Hund ist. Danach sollte ein spezialisiertes Sub-Netzwerk für jede allgemeine Klasse die Rasse des Hundes oder der Katze vorhersagen.Wie erstellt man eine Hierarchie mit mehreren Netzwerken in Keras?

Ich weiß über die funktionale API von Keras und wie ich die Ausgabe an eine andere Schicht oder ein Netzwerk weitergeben kann, aber mein Problem ist, wie ich die Ausgabe nur an ein spezialisiertes Netzwerk weitergeben, so dass ich nach der allgemeinen Klasse das einzige Netzwerk voraussage Verwendet wird das entsprechende spezielle Netzwerk.

Deshalb möchte ich etwas wie das in keras bauen:

x = Input(shape(100,)) 
network_a_out = NetworkA(100)(x) 
if(network_a_out == classCat) 
    out = NetworkCat(100)(x) # predict special race of cat 
else: 
    out = NetworkDog(100)(x) # predict special race of dog 

Gibt es eine bessere Art und Weise, in keras zu lösen, ohne mehrere if/else-Anweisungen?

+1

Sie bereits die gleiche Frage bereits gestellt: https://StackOverflow.com/Questions/45736869/How-to-combine-multiple-neural-Networks-in-keras Bitte tun Sie das nicht. –

+0

Ich löschte die alte Frage jetzt ich hoffe, dass diese einfacher zu verstehen ist –

+0

Dieser Code würde nicht funktionieren, aber auch, warum sollten Sie das alles in einem Netzwerk wollen. Sie wären viel besser mit drei separaten Netzwerken, so dass Ihre Features Layer neue Gewichte in den sekundären Netzwerken bekommen, die sich auf die Tierzucht gegen die Art des Tieres konzentrieren. – DJK

Antwort

0

Sie können versuchen, die letzten Layer (die einen Hund/eine Katze vorhersagen) zu entfernen und eine neue Ebene hinzufügen, um die Rasse des Hundes/der Katze vorherzusagen. Das heißt, nutzen Sie das erste NN als vortrainiertes Netzwerk, um eine Tierrasse vorherzusagen. Sie sollten ein vortrainiertes Netzwerk für Hunde und andere für Katzen trainieren.

+0

Ja, das ist, wie ich mein Problem lösen will, aber ich weiß es nicht Wie kann ich dies in Keras (oder Tensorflow) machen Ich weiß, ich kann die Ausgabe der ersten NN weitergeben und sie an jedes spezialisierte Netzwerk weitergeben, aber ich weiß nicht, wie ich die Ausgabe nur an das entsprechende spezialisierte Netzwerk weitergeben kann (ohne viele zu programmieren) if/else für jede Unterklasse) –

+0

Angenommen, Sie haben die trainierte NN gespeichert (die Hund/Katze vorhersagt). In einem neuen Skript laden Sie dieses Netzwerk, entfernen die letzten Ebenen, fügen neue Ebenen hinzu (letzte Ebene mit der Größe der Anzahl der Hunderennen) und trainieren dieses vortrainierte Netz mit den Daten der Hunderunden. Nach dem Training können Sie das NN in einer anderen Datei speichern. Machen Sie dasselbe, um Katzenrennen vorherzusagen. – asabater

Verwandte Themen