Tensorflow Lite:没有名为 tf.contrib.lite 的模块

Tensorflow Lite: No module named tf.contrib.lite

我尝试使用以下代码 (tf_lite_converter.py) 转换保存在 .pb 文件中的现有冻结图:

#!/usr/bin/env python
import sys
import tensorflow as tf

from tf.contrib.lite import convert_savedmodel

convert_savedmodel.convert(
    saved_model_dir="/frozen_inference_graph.pb",
    output_tflite="/TF_Lite_Model")

当运行代码用

python tf_lite_converter.py 

在我的 anaconda 环境中,它给我错误:

ImportError: No module named tf.contrib.lite

我的目标是从我的 .pb-graph 中获取一个 tensorflowlite-model,以便在 Android 应用程序中使用它。我已经尝试通过 bazel 使用 toco 构建 tflite,但也许(或最有可能)我做错了什么或者这不是解决问题的正确方法。

来自 Tensorflow 开发人员的参考视频: https://youtu.be/FAMfy7izB6A?t=11m49s

该视频中的代码可能来自内部开发版本。

convert_savedmodel 已在 https://github.com/tensorflow/tensorflow/commit/db076ca01f12368c9476fa4db9d87756f22f9670

中重命名为 convert_saved_model

以下似乎适用于 tensorflow 1.8:

from  tensorflow.contrib.lite.python import convert_saved_model

convert_saved_model.convert(saved_model_dir="/frozen_inference_graph.pb",output_tflite="/TF_Lite_Model")

以下是从当前master构建的tensorflow(方法和参数已重命名):

from  tensorflow.contrib.lite.python import convert_saved_model

convert_saved_model.tflite_from_saved_model(saved_model_dir="/frozen_inference_graph.pb",output_file="/TF_Lite_Model")

None 以上内容对我有用。

我降级到 Tensorflow 1.7 并使用 toco 将 .pb 模型转换为 .tflite 模型。

$ pip install --upgrade "tensorflow==1.7.*"

$ toco \
  --input_file=tf_files/retrained_graph.pb \
  --output_file=tf_files/optimized_graph.lite \
  --input_format=TENSORFLOW_GRAPHDEF \
  --output_format=TFLITE \
  --input_shape=1,${IMAGE_SIZE},${IMAGE_SIZE},3 \
  --input_array=input \
  --output_array=final_result \
  --inference_type=FLOAT \
  --input_data_type=FLOAT

参考: https://codelabs.developers.google.com/codelabs/tensorflow-for-poets-2-tflite/#2 https://github.com/googlecodelabs/tensorflow-for-poets-2/issues/52 https://medium.com/@rdeep/tensorflow-lite-tutorial-easy-implementation-in-android-145443ec3775