Detectron: Le dernier pyyaml ​​attend la classe mais obtient la fonction

Créé le 16 mars 2019  ·  7Commentaires  ·  Source: facebookresearch/Detectron

Salut,
Je ne sais pas si le problème vient de vous ou de pyyaml, mais je viens de terminer une version propre et j'obtiens l'erreur suivante lors de l'exécution de l'exemple infer_simple.py avec pyyaml ​​version 5.1

yaml.constructor.ConstructorError: while constructing a Python instance expected a class, but found <class 'builtin_function_or_method'> in "<unicode string>", line 3, column 20: BBOX_XFORM_CLIP: !!python/object/apply:numpy.core ...

J'ai ramené la version à 4.2 et cela fonctionne bien :
pip installer pyyaml==4.2b2

Informations système

  • Système d'exploitation : 18.04
  • Version du compilateur : 3.6
  • Version CUDA : 10
  • version cuDNN : 9
  • Version du pilote NVIDIA : 415
  • Modèles de GPU (pour tous les appareils s'ils ne sont pas tous identiques) : 1080ti
  • Variable d'environnement PYTHONPATH : NA
  • python --version sortie : 3.6.7
  • Autre chose qui semble pertinente : ?

Commentaire le plus utile

J'ai rencontré la même erreur et résolu le problème en changeant
yaml_load = yaml.load
à
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
en detectron/utils/env.py
Je ne sais pas s'il s'agit d'une solution valable dans tous les cas, car yaml.load peut être utilisé ailleurs dans la base de code. Cependant, dans mon cas, c'était une bonne solution de contournement.

Tous les 7 commentaires

J'ai rencontré la même erreur et résolu le problème en changeant
yaml_load = yaml.load
à
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
en detectron/utils/env.py
Je ne sais pas s'il s'agit d'une solution valable dans tous les cas, car yaml.load peut être utilisé ailleurs dans la base de code. Cependant, dans mon cas, c'était une bonne solution de contournement.

@matthhan l'a résolu pour moi. Merci!

J'ai rencontré la même erreur et résolu le problème en changeant
yaml_load = yaml.load
à
yaml_load = lambda x: yaml.load(x, Loader=yaml.Loader)
en detectron/utils/env.py
Je ne sais pas s'il s'agit d'une solution valable dans tous les cas, car yaml.load peut être utilisé ailleurs dans la base de code. Cependant, dans mon cas, c'était une bonne solution de contournement.

Ça marche vraiment!! Merci ~

Une autre solution de contournement consiste à restaurer le pyyaml ​​à la version 3.12, puisque le detectron semble initialement construit sur cette version. Un problème similaire se trouve dans https://github.com/facebookresearch/DensePose/issues/216

J'obtiens la même erreur mais mon pyyaml=3.12 , j'ai besoin d'aide.

Informations système
Système d'exploitation : 16.04
Version du compilateur : 2.7
Version CUDA : 9

Salut,
Je ne sais pas si le problème vient de vous ou de pyyaml, mais je viens de terminer une version propre et j'obtiens l'erreur suivante lors de l'exécution de l'exemple infer_simple.py avec pyyaml ​​version 5.1

yaml.constructor.ConstructorError: while constructing a Python instance expected a class, but found <class 'builtin_function_or_method'> in "<unicode string>", line 3, column 20: BBOX_XFORM_CLIP: !!python/object/apply:numpy.core ...

J'ai ramené la version à 4.2 et cela fonctionne bien :
pip installer pyyaml==4.2b2

Informations système

  • Système d'exploitation : 18.04
  • Version du compilateur : 3.6
  • Version CUDA : 10
  • version cuDNN : 9
  • Version du pilote NVIDIA : 415
  • Modèles de GPU (pour tous les appareils s'ils ne sont pas tous identiques) : 1080ti
  • Variable d'environnement PYTHONPATH : NA
  • python --version sortie : 3.6.7
  • Autre chose qui semble pertinente : ?

bonjour, je veux savoir comment compilez-vous votre caffe2 avec cuda10. Dans l'attente de votre réponse.

Je partage mon expérience au cas où cela aiderait quelqu'un : j'ai eu le même problème sur un ordinateur avec Ubuntu 16.04, Cuda 9.0, Python 3.7. Nous avons essayé les suggestions des deux premiers messages et essayé de forcer l'installation de PyYAML 3.12, en vain. En vérifiant les lignes de config.py où l'erreur s'est produite, nous avons réalisé que le config.py dans le conteneur docker était une version plus ancienne que celle téléchargée à l'aide de git clone (!?!). En copiant la dernière version dans le conteneur docker, ainsi que les modifications apportées à env.py dans le message de

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

olgaliak picture olgaliak  ·  4Commentaires

junxiaoge picture junxiaoge  ·  3Commentaires

gaopeng-eugene picture gaopeng-eugene  ·  4Commentaires

pacelu picture pacelu  ·  3Commentaires

rbgirshick picture rbgirshick  ·  3Commentaires