TensorFlow AttributeError:模块tensorflow.contrib.lite.python.lite没有属性TFLiteConverter

时间:2018-12-11 00:40:47

标签: python tensorflow

我正在尝试在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)

请帮助!

3 个答案:

答案 0 :(得分:0)

在除Mac之外的所有操作系统上,TfliteConverter和TocoConverter似乎都存在很大问题。您仍然可以使用以下步骤将模型转换为TensorFlow Lite:

  1. 创建一个新的Google Colab笔记本
  2. 编写代码以转换模型。导入TFLiteConverter和其他内容。
  3. 在笔记本中上传模型。
  4. 运行笔记本。
  5. 下载生成的TFLite文件。

您可以使用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