PINTO0309 / tflite2tensorflow

Generate saved_model, tfjs, tf-trt, EdgeTPU, CoreML, quantized tflite, ONNX, OpenVINO, Myriad Inference Engine blob and .pb from .tflite. Support for building environments with Docker. It is possible to directly access the host PC GUI and the camera to verify the operation. NVIDIA GPU (dGPU) support. Intel iHD GPU (iGPU) support. Supports inverse quantization of INT8 quantization model.
https://qiita.com/PINTO
MIT License
258 stars 38 forks source link

ValueError: The name 'serving_default_input_1:0:0' looks a like a Tensor name, but is not a valid one. Tensor names must be of the form "<op_name>:<output_index>". #31

Closed e42101ex closed 2 years ago

e42101ex commented 2 years ago

Issue Type

Bug

OS

Ubuntu

OS architecture

x86_64

Programming Language

Python

Framework

TensorFlow

Download URL for tflite file

nms_yolact_edge.zip

Convert Script

python convert_onnx.py

onnxsim yolact_resnet50_62_17262.onnx yolact_resnet50_62_17262.onnx onnxsim yolact_resnet50_62_17262.onnx yolact_resnet50_62_17262.onnx onnxsim yolact_resnet50_62_17262.onnx yolact_resnet50_62_17262.onnx onnxsim yolact_resnet50_62_17262.onnx yolact_resnet50_62_17262.onnx

python nms_yolact_edge.py

tflite2tensorflow \ --model_path nms_yolact_edge.tflite \ --flatc_path ../flatc \ --schema_path ../schema.fbs \ --output_pb \ --optimizing_for_openvino_and_myriad

Description

Hi @PINTO0309, I was trying to convert yolact-edge with backbone resnet50.

Then I got error while trying the following steps.

Error message shows 'serving_default_input_1:0:0' is invalid. Perhaps it should be 'serving_default_input_1:0'?

Would you please help check it? Thanks you.

Relevant Log Output

op_types: ['RESHAPE', 'STRIDED_SLICE', 'CONCATENATION', 'NON_MAX_SUPPRESSION_V4', 'GATHER', 'EXPAND_DIMS', 'CAST', 'TRANSPOSE']
num of ops: 29
[{'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [0, 20],
  'opcode_index': 0,
  'outputs': [23]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [3, 21],
  'opcode_index': 0,
  'outputs': [24]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [2, 21],
  'opcode_index': 0,
  'outputs': [25]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [1, 22],
  'opcode_index': 0,
  'outputs': [26]},
 {'builtin_options': {'begin_mask': 1,
                      'ellipsis_mask': 0,
                      'end_mask': 1,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 2},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [23, 11, 15, 10],
  'opcode_index': 1,
  'outputs': [27]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [27, 16],
  'opcode_index': 0,
  'outputs': [28]},
 {'builtin_options': {'begin_mask': 3,
                      'ellipsis_mask': 0,
                      'end_mask': 3,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 0},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [28, 11, 11, 10],
  'opcode_index': 1,
  'outputs': [29]},
 {'builtin_options': {'begin_mask': 1,
                      'ellipsis_mask': 0,
                      'end_mask': 1,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 2},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [23, 15, 14, 10],
  'opcode_index': 1,
  'outputs': [30]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [30, 16],
  'opcode_index': 0,
  'outputs': [31]},
 {'builtin_options': {'begin_mask': 3,
                      'ellipsis_mask': 0,
                      'end_mask': 3,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 0},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [31, 11, 11, 10],
  'opcode_index': 1,
  'outputs': [32]},
 {'builtin_options': {'begin_mask': 1,
                      'ellipsis_mask': 0,
                      'end_mask': 1,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 2},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [23, 14, 13, 10],
  'opcode_index': 1,
  'outputs': [33]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [33, 16],
  'opcode_index': 0,
  'outputs': [34]},
 {'builtin_options': {'begin_mask': 3,
                      'ellipsis_mask': 0,
                      'end_mask': 3,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 0},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [34, 11, 11, 10],
  'opcode_index': 1,
  'outputs': [35]},
 {'builtin_options': {'begin_mask': 1,
                      'ellipsis_mask': 0,
                      'end_mask': 1,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 2},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [23, 13, 12, 10],
  'opcode_index': 1,
  'outputs': [36]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [36, 16],
  'opcode_index': 0,
  'outputs': [37]},
 {'builtin_options': {'begin_mask': 3,
                      'ellipsis_mask': 0,
                      'end_mask': 3,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 0},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [37, 11, 11, 10],
  'opcode_index': 1,
  'outputs': [38]},
 {'builtin_options': {'begin_mask': 14,
                      'ellipsis_mask': 0,
                      'end_mask': 14,
                      'new_axis_mask': 0,
                      'shrink_axis_mask': 1},
  'builtin_options_type': 'StridedSliceOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [4, 17, 18, 19],
  'opcode_index': 1,
  'outputs': [39]},
 {'builtin_options': {'axis': 1, 'fused_activation_function': 'NONE'},
  'builtin_options_type': 'ConcatenationOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [32, 29, 38, 35],
  'opcode_index': 2,
  'outputs': [40]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [40, 24, 7, 6, 5],
  'opcode_index': 3,
  'outputs': [41, 42]},
 {'builtin_options': {'axis': 0, 'batch_dims': 0},
  'builtin_options_type': 'GatherOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [23, 41],
  'opcode_index': 4,
  'outputs': [43]},
 {'builtin_options': {'axis': 0, 'batch_dims': 0},
  'builtin_options_type': 'GatherOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [24, 41],
  'opcode_index': 4,
  'outputs': [44]},
 {'builtin_options': {},
  'builtin_options_type': 'ExpandDimsOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [44, 8],
  'opcode_index': 5,
  'outputs': [45]},
 {'builtin_options': {'axis': 0, 'batch_dims': 0},
  'builtin_options_type': 'GatherOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [25, 41],
  'opcode_index': 4,
  'outputs': [46]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [46],
  'opcode_index': 6,
  'outputs': [47]},
 {'builtin_options': {},
  'builtin_options_type': 'ExpandDimsOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [47, 8],
  'opcode_index': 5,
  'outputs': [48]},
 {'builtin_options': {'axis': 0, 'batch_dims': 0},
  'builtin_options_type': 'GatherOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [26, 41],
  'opcode_index': 4,
  'outputs': [49]},
 {'builtin_options': {'axis': 1, 'fused_activation_function': 'NONE'},
  'builtin_options_type': 'ConcatenationOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [43, 45, 48, 49],
  'opcode_index': 2,
  'outputs': [50]},
 {'builtin_options': {'axis': 2, 'batch_dims': 0},
  'builtin_options_type': 'GatherOptions',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [39, 41],
  'opcode_index': 4,
  'outputs': [51]},
 {'builtin_options_type': 'NONE',
  'custom_options_format': 'FLEXBUFFERS',
  'inputs': [51, 9],
  'opcode_index': 7,
  'outputs': [52]}]
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
inputs:
{'dtype': <class 'numpy.float32'>,
 'index': 0,
 'name': 'serving_default_input_1:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248,     4], dtype=int32),
 'shape_signature': array([    1, 19248,     4], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 1,
 'name': 'serving_default_input_4:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248,    32], dtype=int32),
 'shape_signature': array([    1, 19248,    32], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.int64'>,
 'index': 2,
 'name': 'serving_default_input_3:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248], dtype=int32),
 'shape_signature': array([    1, 19248], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 3,
 'name': 'serving_default_input_2:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248], dtype=int32),
 'shape_signature': array([    1, 19248], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 4,
 'name': 'serving_default_input_5:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1,   138,   138, 19248], dtype=int32),
 'shape_signature': array([    1,   138,   138, 19248], dtype=int32),
 'sparsity_parameters': {}}
TensorFlow/Keras model building process starts ======================================
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: Placeholder
{'dtype': <class 'numpy.float32'>,
 'index': 0,
 'name': 'serving_default_input_1:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248,     4], dtype=int32),
 'shape_signature': array([    1, 19248,     4], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 1,
 'name': 'serving_default_input_4:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248,    32], dtype=int32),
 'shape_signature': array([    1, 19248,    32], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.int64'>,
 'index': 2,
 'name': 'serving_default_input_3:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248], dtype=int32),
 'shape_signature': array([    1, 19248], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 3,
 'name': 'serving_default_input_2:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1, 19248], dtype=int32),
 'shape_signature': array([    1, 19248], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 4,
 'name': 'serving_default_input_5:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([    1,   138,   138, 19248], dtype=int32),
 'shape_signature': array([    1,   138,   138, 19248], dtype=int32),
 'sparsity_parameters': {}}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [0, 20],
 'opcode_index': 0,
 'outputs': [23]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [3, 21],
 'opcode_index': 0,
 'outputs': [24]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [2, 21],
 'opcode_index': 0,
 'outputs': [25]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [1, 22],
 'opcode_index': 0,
 'outputs': [26]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 1,
                     'ellipsis_mask': 0,
                     'end_mask': 1,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 2},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [23, 11, 15, 10],
 'opcode_index': 1,
 'outputs': [27]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [27, 16],
 'opcode_index': 0,
 'outputs': [28]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 3,
                     'ellipsis_mask': 0,
                     'end_mask': 3,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 0},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [28, 11, 11, 10],
 'opcode_index': 1,
 'outputs': [29]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 1,
                     'ellipsis_mask': 0,
                     'end_mask': 1,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 2},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [23, 15, 14, 10],
 'opcode_index': 1,
 'outputs': [30]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [30, 16],
 'opcode_index': 0,
 'outputs': [31]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 3,
                     'ellipsis_mask': 0,
                     'end_mask': 3,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 0},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [31, 11, 11, 10],
 'opcode_index': 1,
 'outputs': [32]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 1,
                     'ellipsis_mask': 0,
                     'end_mask': 1,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 2},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [23, 14, 13, 10],
 'opcode_index': 1,
 'outputs': [33]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [33, 16],
 'opcode_index': 0,
 'outputs': [34]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 3,
                     'ellipsis_mask': 0,
                     'end_mask': 3,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 0},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [34, 11, 11, 10],
 'opcode_index': 1,
 'outputs': [35]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 1,
                     'ellipsis_mask': 0,
                     'end_mask': 1,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 2},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [23, 13, 12, 10],
 'opcode_index': 1,
 'outputs': [36]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: RESHAPE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [36, 16],
 'opcode_index': 0,
 'outputs': [37]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 3,
                     'ellipsis_mask': 0,
                     'end_mask': 3,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 0},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [37, 11, 11, 10],
 'opcode_index': 1,
 'outputs': [38]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: STRIDED_SLICE
{'builtin_options': {'begin_mask': 14,
                     'ellipsis_mask': 0,
                     'end_mask': 14,
                     'new_axis_mask': 0,
                     'shrink_axis_mask': 1},
 'builtin_options_type': 'StridedSliceOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [4, 17, 18, 19],
 'opcode_index': 1,
 'outputs': [39]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: CONCATENATION
{'builtin_options': {'axis': 1, 'fused_activation_function': 'NONE'},
 'builtin_options_type': 'ConcatenationOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [32, 29, 38, 35],
 'opcode_index': 2,
 'outputs': [40]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: NON_MAX_SUPPRESSION_V4
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [40, 24, 7, 6, 5],
 'opcode_index': 3,
 'outputs': [41, 42]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: GATHER
{'builtin_options': {'axis': 0, 'batch_dims': 0},
 'builtin_options_type': 'GatherOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [23, 41],
 'opcode_index': 4,
 'outputs': [43]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: GATHER
{'builtin_options': {'axis': 0, 'batch_dims': 0},
 'builtin_options_type': 'GatherOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [24, 41],
 'opcode_index': 4,
 'outputs': [44]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: EXPAND_DIMS
{'builtin_options': {},
 'builtin_options_type': 'ExpandDimsOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [44, 8],
 'opcode_index': 5,
 'outputs': [45]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: GATHER
{'builtin_options': {'axis': 0, 'batch_dims': 0},
 'builtin_options_type': 'GatherOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [25, 41],
 'opcode_index': 4,
 'outputs': [46]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: CAST
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [46],
 'opcode_index': 6,
 'outputs': [47]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: EXPAND_DIMS
{'builtin_options': {},
 'builtin_options_type': 'ExpandDimsOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [47, 8],
 'opcode_index': 5,
 'outputs': [48]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: GATHER
{'builtin_options': {'axis': 0, 'batch_dims': 0},
 'builtin_options_type': 'GatherOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [26, 41],
 'opcode_index': 4,
 'outputs': [49]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: CONCATENATION
{'builtin_options': {'axis': 1, 'fused_activation_function': 'NONE'},
 'builtin_options_type': 'ConcatenationOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [43, 45, 48, 49],
 'opcode_index': 2,
 'outputs': [50]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: GATHER
{'builtin_options': {'axis': 2, 'batch_dims': 0},
 'builtin_options_type': 'GatherOptions',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [39, 41],
 'opcode_index': 4,
 'outputs': [51]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ op: TRANSPOSE
{'builtin_options_type': 'NONE',
 'custom_options_format': 'FLEXBUFFERS',
 'inputs': [51, 9],
 'opcode_index': 7,
 'outputs': [52]}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
outputs:
{'dtype': <class 'numpy.float32'>,
 'index': 50,
 'name': 'PartitionedCall:1',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([100,  38], dtype=int32),
 'shape_signature': array([-1, 38], dtype=int32),
 'sparsity_parameters': {}}
{'dtype': <class 'numpy.float32'>,
 'index': 52,
 'name': 'PartitionedCall:0',
 'quantization': (0.0, 0),
 'quantization_parameters': {'quantized_dimension': 0,
                             'scales': array([], dtype=float32),
                             'zero_points': array([], dtype=int32)},
 'shape': array([100, 138, 138], dtype=int32),
 'shape_signature': array([ -1, 138, 138], dtype=int32),
 'sparsity_parameters': {}}
TensorFlow/Keras model building process complete!
saved_model / .pb output started ====================================================
ERROR: The name 'serving_default_input_1:0:0' looks a like a Tensor name, but is not a valid one. Tensor names must be of the form "<op_name>:<output_index>".
Traceback (most recent call last):
  File "/home/yc/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py", line 4011, in _as_graph_element_locked
    op_name, out_n = name.split(":")
ValueError: too many values to unpack (expected 2)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/yc/.local/bin/tflite2tensorflow", line 5974, in main
    inputs= {re.sub(':0*', '', t): graph.get_tensor_by_name(t) for t in input_node_names},
  File "/home/yc/.local/bin/tflite2tensorflow", line 5974, in <dictcomp>
    inputs= {re.sub(':0*', '', t): graph.get_tensor_by_name(t) for t in input_node_names},
  File "/home/yc/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py", line 4156, in get_tensor_by_name
    return self.as_graph_element(name, allow_tensor=True, allow_operation=False)
  File "/home/yc/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py", line 3974, in as_graph_element
    return self._as_graph_element_locked(obj, allow_tensor, allow_operation)
  File "/home/yc/.local/lib/python3.8/site-packages/tensorflow/python/framework/ops.py", line 4014, in _as_graph_element_locked
    raise ValueError("The name %s looks a like a Tensor name, but is "
ValueError: The name 'serving_default_input_1:0:0' looks a like a Tensor name, but is not a valid one. Tensor names must be of the form "<op_name>:<output_index>".

Source code for simple inference testing code

No response

PINTO0309 commented 2 years ago

If the name of the input/output OP contains :0, TensorFlow will error. However, the :0 is automatically added by TensorFlow itself. Therefore, to avoid problems with TensorFlow behavior, the tflite file must be edited to remove all :0.

The tflite file can be rewritten by the IDE.

I have created a tool to make it easier for you guys to edit tflite files. Please refer to the following repository for a tutorial. https://github.com/PINTO0309/tflite2json2tflite image