2017-10-06 2 views
0

Je cherche un moyen de transférer la sortie de la couche inférieure vers une couche supérieure avec un modèle VGG16 chargé en utilisant CNTK.Accès à la couche inférieure en couche supérieure à l'aide de CNTK et transfert d'apprentissage

Le fond de mon problème est:

Je réimplémentées certaines parties de Fully Convolutional Networks for Semantic Segmentation mais je suis tombé sur quelques problèmes: A partir de this example j'ai remplacé les couches entièrement connectées avec entièrement convolutionnel et fente la séquence dans la partie de définition du modèle en morceaux où je pouvais simplement accéder pool3 et pool4 pour l'utilisation ultérieure dans par exemple. Convolution2D((1,1), num_classes, name='score_pool4')(pool4). Cela fonctionne bien, mais après avoir construit le modèle, j'ai remarqué que je devais mettre en place un mode de lecture des lots, car le lecteur intégré ne prend pas en charge les étiquettes 2D en ce moment. Maintenant, je lis simplement les images en utilisant OpenCV et remplacé le training_session(...).train() avec une boucle for et trainer.train_minibatch({model['features']: my_loaded_features, model['labels']: my_2D_labels}) cela fonctionne bien mais en raison de la partie training_session supprimé, je ne sais pas où je pourrais appliquer les poids VGG16 existants.

Mon problème est:

j'ai cherché transfer learning examples où ces gars modèles de charge à l'aide C.load_model(...) puis cloner les couches nécessaires mais maintenant je me demande comment pourrais-je accéder à cloned_layers-> pool4 (en au milieu du modèle chargé) si je veux aussi l'utiliser dans des couches plus profondes.

J'ai essayé Convolution2D((1,1), num_classes, name='score_pool4')(cloned_layers.find_by_name('pool4')) mais je me suis retrouvé avec quelques messages d'erreur lors de l'initialisation de l'apprenant en raison de "l'information de forme inconnue" dans les variables de poids utilisées.

Alors, comment puis-je accéder à ces couches dans le modèle chargé pour une utilisation ultérieure (plus profonde)?

Merci d'avoir lu (et peut-être aider)!

Répondre

1

Si vous cherchez à lire des données personnalisées. Il y a deux tutoriels sur la construction de vos propres lecteurs. https://cntk.ai/pythondocs/manuals.html

En ce qui concerne les pièces de clonage d'un réseau - here is a link à un autre poste sur StackOverflow qui a le code exemple