Ошибка атрибута: модуль ‘tensorflow._api.v2.saved_model’ не имеет атрибута ‘loader’

#python #tensorflow #machine-learning #tensorflow2.0

#питон #тензорный поток #машинное обучение #tensorflow2.0

Вопрос:

Я пытаюсь использовать модель для распознавания текста, и у меня есть этот блок кода, который приводит к ошибке: «AttributeError: модуль ‘tensorflow._api.v2.saved_model’ не имеет атрибута ‘loader'», который, как я предполагаю, связан с использованием конструкции TF версии 1, которая больше недействительна в V2

 def load_graph(self, modelFile):    
        graph = tf.Graph()
        # graph_def = tf.compat.v1.GraphDef()
        sess = tf.compat.v1.Session(graph=tf.Graph())
Point of failure -> model = tf.saved_model.loader.load(sess, [tf.saved_model.tag_constants.SERVING], './model')
        graph_def = model.graph_def
        
        with open(modelFile, "rb") as f:
            graph_def.ParseFromString(f.read())
        
        with graph.as_default():
            tf.import_graph_def(graph_def)
        
        return graph
 

Я изменил исходную конструкцию с tf.Session () на tf.compat.v1.Session (), что приводит нас к этой ошибке.
Что было бы эквивалентом для TF V2, который я могу использовать в этом случае?

РЕДАКТИРОВАТЬ: Ранее я пробовал этот вариант, который имел ту же ошибку.

 def load_graph(self, modelFile):
         
        graph = tf.Graph()
        graph_def = tf.GraphDef()
         
        with open(modelFile, "rb") as f:
            graph_def.ParseFromString(f.read())
         
        with graph.as_default():
            tf.import_graph_def(graph_def)
         
        return graph
 

Комментарии:

1. Можете ли вы попробовать изменить tf.saved_model.loader.load на tf.compat.v1.saved_model.load . Вы можете обратиться сюда за более подробной информацией.

2. @Kishore Это действительно сработало, спасибо. Теперь появилась новая ошибка «AttributeError: модуль ‘tensorflow._api.v2.saved_model’ не имеет атрибута’tag_constants'», но, вероятно, в дальнейшем их будет больше, поэтому мой новый вопрос заключается в том, как я могу эффективно искать более новые версии методов, чтобы»перевести» старые методы TF1.15 в новейшие методы TF2?

3. Перенесите рабочий процесс SavedModel, поможет вам перенести сохраненную модель Tf1 на совместимую с Tf2. Спасибо!

4. @TFer Спасибо!