我正在尝试在Raspberry Pi 3B + Linux中将冻结的图形文件(.pb)转换为TensorFlow Lite FlatBuffer文件(.tflite)。 TensorFlow是使用pip3在Python中安装的; TensorFlow Lite是从源代码安装和构建的(静态库)。 TensorFlow版本(安装在Python中)为1.11.0。
我收到此错误: AttributeError:模块'tensorflow.contrib.lite.python.lite'没有属性'TFLiteConverter'。
这是Python代码(源自https://www.tensorflow.org/lite/convert/python_api):
#!/usr/bin/python3
import tensorflow as tf
print("tf version = " + tf.version)
graph_def_file = "/home/pi/sols/demo/src/image_classification/network/fruit_models/frozen_graph.pb"
input_arrays = ["X"]
output_arrays = ["softmax"]
converter = tf.contrib.lite.TFLiteConverter.from_frozen_graph(
graph_def_file, input_arrays, output_arrays)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)
请帮助!
答案 0 :(得分:0)
在除Mac之外的所有操作系统上,TfliteConverter和TocoConverter似乎都存在很大问题。您仍然可以使用以下步骤将模型转换为TensorFlow Lite:
您可以使用this notebook。
答案 1 :(得分:0)
我认为问题在于文档反映了最新版本。在1.11.0中,它的名称可能有所不同,并被重命名为TFLiteConverter。
答案 2 :(得分:0)
似乎取决于您使用的tensorflow版本:
>>> import tensorflow as tf
>>> dir(tf.contrib.lite)
['DecodeError', 'Interpreter', 'OpHint', 'PY3', 'TocoConverter', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_freeze_graph', '_freeze_saved_model', '_get_tensors_from_tensor_names', '_global_variables_initializer', '_graph_pb2', '_import_graph_def', '_is_frozen_graph', '_keras', '_session', '_set_tensor_shapes', '_signature_constants', '_tag_constants', '_tensor_name', '_text_format', '_tf_graph_util', 'absolute_import', 'build_toco_convert_protos', 'constants', 'convert_op_hints_to_stubs', 'division', 'print_function', 'toco_convert', 'toco_convert_protos']
>>> tf.__version__
'1.10.0'
因此在旧版本中,它是TocoConverter
https://www.tensorflow.org/api_docs/python/tf/contrib/lite/TocoConverter