2017-06-22 1 views
2

Je veux réorganiser le modèle de création avec 1003 classes où les 1000 premières classes sont identiques à imagenet (modèle de création). J'ai donc pris avec le modèle initial et extrait les poids de couche finale et ajouté 3 colonnes de plus. J'ai fait apparaître le dernier calque créé un autre calque avec 1003 classes et avec les poids que j'ai changé, comme le poids des 1000 premières classes reste le même que la création mais pendant l'entraînement la précision commence à partir de 0 ce que je ne m'attendais pas. Qu'est-ce qui ne va pas ..?Création ajout de nouveaux calques

ceci est mon 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) 

Répondre

0

On dirait que vous essayez de faire un transfert d'apprentissage (à savoir en utilisant le modèle de création v3 pour classer un ensemble différent d'images qu'il a été formé à faire). Il y a un bon tutoriel sur ce sujet ici https://codelabs.developers.google.com/codelabs/tensorflow-for-poets/#0

Fondamentalement, tout ce que vous devez faire est de mettre vos images de formation dans des dossiers nommés par chaque classe (vous auriez 1003 dossiers) et exécutez le script retrain.py (inclus dans le Didacticiel). Vous voulez vous assurer que retrain.py est exécuté sur les nouveaux dossiers d'image.