Чтобы загрузить файл pb: DecodeError: сообщение об ошибке синтаксического анализа

Я пытаюсь загрузить файл .pb, сгенерированный из конвейера pusher tfx. Я использую следующую функцию для загрузки файла, но я получил следующую ошибку от функции. Пожалуйста помоги.

ошибка:

<ipython-input-40-af7ef7ac8a8b> in load_model()
      2     with tf.compat.v2.io.gfile.GFile('/home//saved_model.pb', "rb") as f:
      3         graph_def = tf.compat.v1.GraphDef()
----> 4         graph_def.ParseFromString(f.read())
      5 
      6     with tf.Graph().as_default() as graph:
DecodeError: Error parsing message

Функция

def load_model():
    with tf.compat.v2.io.gfile.GFile('/home/saved_model.pb', "rb") as f:
        graph_def = tf.compat.v1.GraphDef()
        graph_def.ParseFromString(f.read())

    with tf.Graph().as_default() as graph:
        tf.import_graph_def(graph_def, name="")
    return graph

person LLTeng    schedule 19.05.2020    source источник
comment
Есть ли еще ошибка? это слишком расплывчато   -  person drum    schedule 19.05.2020
comment
Привет, я добавил сообщение об ошибке в сообщение   -  person LLTeng    schedule 19.05.2020
comment
stackoverflow.com/questions/51278213/ Проверьте это.   -  person Siva Shanmugam    schedule 19.05.2020
comment
Привет Шива, спасибо за направление. После замены graph_def.ParseFromString(f.read()) на google.protobuf,text_format.Merge(f.read(), graph_def) я получаю другую ошибку: UnicodeDecodeError: кодек utf-8 может t декодировать байт 0xb3 в позиции 3: недопустимый начальный байт   -  person LLTeng    schedule 19.05.2020


Ответы (1)


Эй, вы можете попробовать этот код для загрузки файлов .pb, предоставленных tensorflow:

import tensorflow as tf
import sys
from tensorflow.python.platform import gfile
from tensorflow.core.protobuf import saved_model_pb2
from tensorflow.python.util import compat

with tf.Session() as sess:
    model_filename ='saved_model.pb'
    with gfile.FastGFile(model_filename, 'rb') as f:
        data = compat.as_bytes(f.read())
        sm = saved_model_pb2.SavedModel()
        sm.ParseFromString(data)
        g_in = tf.import_graph_def(sm.meta_graphs[0].graph_def)
person Aayush Khurana    schedule 19.09.2020
comment
Спасибо! Это сработало для меня. Знаете ли вы, какие следующие шаги нужно сделать, чтобы делать прогнозы? В Керасе это довольно просто, мне просто нужно загрузить модель, а затем вызвать для нее прогнозирование (), но в тензорном потоке я не понял, как это сделать. - person Porridge; 19.12.2020