在Microsoft Custom Vision中创建并导出到tflite的模型缺少操作

时间:2019-06-11 13:54:49

标签: tensorflow microsoft-custom-vision

我们已经使用Microsoft的Custom Vision训练了模型。当我们尝试将.pb转换为.tflite时,会遇到错误。这是我们使用的python代码,如下所示:

import tensorflow as tf
from tensorflow import data
from tensorflow.python.saved_model import tag_constants
from tensorflow.python.tools import freeze_graph
from tensorflow.python import ops
from tensorflow.tools.graph_transforms import TransformGraph

graph_def_file = 'model.pb'
input_arrays = ['Placeholder']
output_arrays = ['model_outputs']

transforms = [
        'remove_nodes(op=Identity)', 
        'merge_duplicate_nodes',
        'strip_unused_nodes',
        'fold_constants(ignore_errors=true)',
        'fold_batch_norms'
]

def get_graph_def_from_file(graph_filepath):
  with ops.Graph().as_default():
    with tf.gfile.GFile(graph_filepath, 'rb') as f:
      graph_def = tf.GraphDef()
      graph_def.ParseFromString(f.read())
      return graph_def

graph_def = get_graph_def_from_file(graph_def_file)
optimized_graph_def = TransformGraph(graph_def, input_arrays, output_arrays, transforms)
tf.train.write_graph(optimized_graph_def, logdir='', as_text=False, name='optimized_model.pb')

optimized_graph_def_file = 'optimized_model.pb'
converter = tf.lite.TFLiteConverter.from_frozen_graph(optimized_graph_def_file, 
        input_arrays,
        output_arrays)
converter.target_ops = [tf.lite.OpsSet.TFLITE_BUILTINS, # We also tried with TF_OPS only and TFLITE_BUILTINS only
                        tf.lite.OpsSet.SELECT_TF_OPS]
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
tflite_model = converter.convert()

open('optimized_converted_model_2.tflite', 'wb').write(tflite_model)

这是网络的输入,它相当早地进行了卷积。

enter image description here

如您所见,似乎TensorFlow似乎无法识别此操作:

enter image description here

0 个答案:

没有答案