Lorsque j'essaye de former mon modèle de détection d'objets, j'obtiens l'erreur suivante:
Traceback (most recent call last): File "train.py", line 53, in <module> from object_detection.builders import model_builder File "C:\Users\hp\models\research\object_detection\builders\model_builder.py", line 63, in <module> from object_detection.models import ssd_efficientnet_bifpn_feature_extractor as ssd_efficientnet_bifpn File "C:\Users\hp\models\research\object_detection\models\ssd_efficientnet_bifpn_feature_extractor.py", line 33, in <module> from official.vision.image_classification.efficientnet import efficientnet_model File "C:\Users\hp\models\official\vision\image_classification\efficientnet\efficientnet_model.py", line 35, in <module> from official.modeling import tf_utils File "C:\Users\hp\models\official\modeling\tf_utils.py", line 25, in <module> from official.modeling import activations File "C:\Users\hp\models\official\modeling\activations\__init__.py", line 16, in <module> from official.modeling.activations.gelu import gelu File "C:\Users\hp\models\official\modeling\activations\gelu.py", line 26, in <module> @tf.keras.utils.register_keras_serializable(package='Text') AttributeError: module 'tensorflow_core.keras.utils' has no attribute 'register_keras_serializable'
Quelle en sera la raison et comment le résoudre?
J'utilise Tensorflow 2.0.0.
3 Réponses :
Je suppose que vous utilisez le jardin modèle Tensorflow. J'ai passé une bonne moitié de la journée à essayer de résoudre ce problème.
Ce que j'ai réalisé, c'est que nous devons mettre à niveau Tensorflow vers la version 2.2.0 (pip installez "tensorflow> 2.2.0" et de plus dans les scripts python dans official / modélisation / activations dans gelu.py et swish.py supprimez le '@' symbole avant tf. J'ai essayé de supprimer simplement le symbole '@' et cela n'a pas fonctionné pour moi, mais la mise à niveau de TF 2.0.0 vers TF 2.2.0 a aidé. De même que Ben l'a mentionné, la fonction register_keras_serializable n'est pas disponible dans generic_utils dans TF2.0.0 dossier - j'ai essayé d'ajouter manuellement le bloc de fonction et d'inclure également une référence dans init .py mais cela n'a pas non plus fonctionné.
Résumé du réseau - veuillez mettre à niveau vers tensorflow 2.2.0 et supprimer le symbole '@'
J'ai résolu cette erreur en créant un environnement virtuel avec pip virtualenv au lieu de conda en utilisant TF 2.0.0.
Pour moi, définir la version tensorflow sur 2.1.0 a résolu le problème
pip install tensorflow==2.1.0
Faire une recherche rapide pour register_keras_serializable dans le référentiel: github.com/tensorflow/tensorflow/… il semble que cette méthode pourrait être dans
keras.utils.generic_utils.register_keras_serializable
, dans ce cas, votre importation est incorrecte.