Загрузить график, а затем использовать его для построения tflite? - PullRequest
0 голосов
/ 18 мая 2018

Я очень новичок в tenorflow, я пытаюсь конвертировать мой файл .pb (протобуфер) в облегченную версию.Но я сталкиваюсь с некоторыми проблемами.время импорта, sys, предупреждения, glob, random, cv2, base64, json, csv, os

import numpy as np
import tensorflow as tf
from collections import OrderedDict
def load_graph(frozen_graph_filename):
    with tf.gfile.GFile(frozen_graph_filename, "rb") as f:
        graph_def = tf.GraphDef()
        graph_def.ParseFromString(f.read())
    with tf.Graph().as_default() as graph:
        tf.import_graph_def(
            graph_def, 
            input_map=None, 
            return_elements=None, 
            name="prefix", 
            op_dict=None, 
            producer_op_list=None
        )
    return graph

Эта функция загружает график для меня, и теперь я хочу преобразовать этот график в tflite, для которого я использовалследующий скрипт.

CD_graph = load_graph("CD_Check_k.pb")
CD_input = CD_graph.get_tensor_by_name('prefix/input_node:0')
CD_output = CD_graph.get_tensor_by_name('prefix/output_node:0')
x_single = tf.placeholder(tf.float32, [1, 256 , 256, 3],
                              name="input_node")
with tf.Session() as sess:
  tflite_model = tf.contrib.lite.toco_convert(CD_graph, input_tensors=[x_single ], output_tensors=[CD_output])
  with open('./mnist.tflite', "wb") as f:
      f.write(tflite_model)

Сообщение об ошибке:

'Graph' object has no attribute 'SerializeToString'          

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете использовать TocoConverter.from_frozen_graph() API, чтобы упростить ваш код, чтобы вам больше не приходилось читать в замороженном графике.Пример из документации скопирован ниже.

Экспорт GraphDef из файла

В следующем примере показано, как преобразовать TensorFlow GraphDef в TensorFlow Lite FlatBuffer, когда GraphDefхранится в файле.Оба файла .pb и .pbtxt принимаются.

В примере используется Mobilenet_1.0_224 .Функция поддерживает только GraphDef, замороженные с помощью freeze_graph.py.

import tensorflow as tf

graph_def_file = "/path/to/Downloads/mobilenet_v1_1.0_224/frozen_graph.pb"
input_arrays = ["input"]
output_arrays = ["MobilenetV1/Predictions/Softmax"]

converter = tf.contrib.lite.TocoConverter.from_frozen_graph(
  graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
...