2017-06-22 5 views
2

Ich möchte das Anfangsmodell mit 1003 Klassen, wo die ersten 1000 Klassen gleichen wie Imagenet (Inception-Modell) sind, umschulen. Also nahm ich mit Anfangsmodell und extrahierte die endgültigen Schichtgewichte und fügte 3 weitere Spalten dazu hinzu. Ich knallte die letzte Schicht eine andere Schicht mit 1003 Klassen und mit den Gewichten, die ich geändert habe, da die Gewichte der ersten 1000 Klassen die gleiche bleiben wie die Anfänge aber während des Trainings beginnt die Genauigkeit bei 0, was ich nicht erwartet habe. Was läuft falsch?Inception Hinzufügen neuer Schichten

dies ist mein Code

base_model = InceptionV3(weights='imagenet', include_top=False) 
m = InceptionV3(weights='imagenet', include_top=True) 
a=m.layers[312].get_weights() 
k=np.random.normal(size=[2048,3]) 
k=k/3 
l=np.random.normal(size=[3]) 
l=l/3 
a[0]=np.concatenate((a[0],k),axis=1) 
a[1]=np.concatenate((a[1],l),axis=0) 

x = base_model.output 
x = GlobalAveragePooling2D()(x) 

predictions = Dense(nb_classes, activation='softmax')(x) 
model = Model(input=base_model.input, output=predictions) 
model.layers[312].set_weights(a) 

Antwort

0

Es klingt wie Sie etwas Transfer Lernen zu tun (das heißt mit der Gründung v3 Modell einen anderen Satz von Bildern zu klassifizieren, als es ursprünglich zu tun ausgebildet wurde) versuchen. Es gibt eine große Anleitung zu diesem Thema hier https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0

Im Grunde alles, was Sie tun müssen, um Ihre Trainingsbilder in Ordner von jeder Klasse mit dem Namen gestellt wird (Sie 1003 Ordner haben würde) und die retrain.py Skript ausgeführt (in dem mitgelieferten Anleitung). Sie möchten sicherstellen, dass retrain.py in den neuen Bildordnern ausgeführt wird.

Verwandte Themen