2017-10-06 2 views
0

J'essaie d'affiner un modèle v3 initial avec 2 catégories. Voici les étapes que j'ai suivies: 1. création de fichiers partagés à partir de données personnalisées en utilisant build_image_data.py en changeant le nombre de classes et d'exemples en imagenet_data.py. Utilisé un fichier labelsfile.txt; 2. changé les valeurs en conséquence dans flowers_data.py et en utilisant flowers_train.py j'ai formé le modèle. ; 3. J'ai gelé le modèle et j'ai obtenu le fichier protobuf. ; 4. Mon noeud d'entrée (x) attend un lot de taille 32 et de taille 299x299x3 donc j'ai piraté mon chemin en dupliquant mon image de test 32 fois et en créant un lot d'entrée; 5. À l'aide d'entrée & noeuds de sortie, lot entrée et le script ci-dessous, je suis en mesure d'imprimer les scores des prédictionsmêmes prédictions pour toutes les entrées avec un modèle v3 de début d'écoute bien affiné

image_data = create_test_batch(args.image_name) 
graph=load_graph(args.frozen_model_filename) 
x = graph.get_tensor_by_name('prefix/batch_processing/Reshape:0') 
y = graph.get_tensor_by_name('prefix/tower_0/logits/predictions:0') 
with tf.Session(graph=graph) as sess: 
    y_out=sess.run(y, feed_dict={x:image_data}) 
    print(y_out) 

Je suis le résultat qui ressemble à:

[[ 0.02264258 0.16756369 0.80979371][ 0.02351799 0.16782859 0.80865341].... [ 0.02205461 0.1794569 0.7984885 ][ 0.02153662 0.16436867 0.81409472]](32) 

Pour toute image entrée, j'ai obtenu le score maximum seulement dans la colonne 3, ce qui signifie que j'obtiendrais la même prédiction pour n'importe quelle entrée.

Y at-il un point qui me manque dans mon processus? Quelqu'un peut-il m'aider avec ce problème? J'utilise python 2.7 dans ubuntu 16.04 dans cloudVM

Répondre

0

J'ai eu un problème similaire récemment et j'ai découvert que j'avais pré-traité mes données de test différemment de la méthode du programme d'optimisation que j'utilisais. Les gammes de données sont différentes - pour les images de formation, les pixels vont de 0 à 255 alors que pour les images de test, les pixels vont de 0 à 1. C'est pourquoi quand j'introduis mes données de test dans le modèle, le modèle produira les mêmes prédictions tout le temps, puisque les pixels des données de test sont dans une gamme si petite qu'elle ne fait aucune différence pour le modèle.

Espérons que cela vous aidera même si ce n'est peut-être pas votre cas.