web-dev-qa-db-fra.com

Tensorflow Assign requiert des formes des deux tenseurs identiques. forme lhs = [20] forme rhs = [48]

Je suis un noob TensorFlow. J'ai formé un modèle TensorFlow à partir de l'implémentation open source de deeppose et dois maintenant exécuter le modèle sur un nouvel ensemble d'images.

Le modèle a été formé sur des images de taille 100 * 100 et j'ai donc redimensionné le nouvel ensemble d'images à la même taille. J'ai 149 nouvelles images pour exécuter le modèle. Lorsque je lance le modèle, j'obtiens l'erreur suivante.

InvalidArgumentError (see above for traceback): Assign requires shapes
of both tensors to match. lhs shape= [20] rhs shape= [48]

À la ligne

saver = tf.train.Saver(tf.all_variables())

Je soupçonne que la taille du modèle formé et les tailles des images test ne correspondent pas. Je ne suis pas clair comment résoudre ce problème. J'ai imprimé la liste des variables de l'appel tf.all_variables(). C'est ici

Tensor("Placeholder:0", shape=(128, 100, 100, 3), dtype=float32)
(11, 11, 3, 20)
conv1/weights:0
(20,)
conv1/biases:0
(5, 5, 20, 35)
conv2/weights:0
(35,)
conv2/biases:0
(3, 3, 35, 50)
conv4/weights:0
(50,)
conv4/biases:0
(3, 3, 50, 75)
conv5/weights:0
(75,)
conv5/biases:0
(300, 1024)
local1/weights:0
(1024,)
local1/biases:0
(1024, 1024)
local2/weights:0
(1024,)
local2/biases:0
(1024, 0)
softmax_linear/weights:0
(0,)
softmax_linear/biases:0

Je ne sais pas d'où vient le paramètre RHS. J'ai examiné tous les fichiers de configuration et il ne semble pas y avoir de paramètre spécifiant cette configuration.

Toute aide pour résoudre ce problème sera grandement appréciée.

7
Pradeep Banavara

Essayez de supprimer tous les points de contrôle qui ont été enregistrés lors des exécutions précédentes. Parfois, lors du changement d'architecture et de la reprise de l'exécution, TF récupérera à partir de l'ancien point de contrôle (mais avec une nouvelle définition) et vous obtiendrez cette erreur.

34
maurice

J'ai aussi rencontré ce problème, le problème étant que les étiquettes et les numéros de classe ne correspondaient pas, j'ai donc modifié et corrigé le numéro de classe et les étiquettes partout.

Dans mon cas, il s’agissait de modifier le paramètre "num_classes" dans le fichier plus rapide_rcnn.config Et le fichier "label_map.pbtxt" avec les valeurs réelles.

2
user1623454

Donc, il se trouve que j'avais mis à jour le code TensorFlow mais que je n'avais pas réussi à le former. Alors, je suis revenu à la version précédente, j'ai apporté les nouvelles modifications appropriées au script d'exécution et je l'ai fait fonctionner. 

0
Pradeep Banavara