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
我尝试使用以下代码 (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