将 Tensorflow Model 转换为 Tensorflow Lite Model 时出错
Errors in converting Tensorflow Model to Tensorflow Lite Model
我想在 Tensorflow lite 框架中使用 yolov4-tiny 来计算视频中穿过虚拟线的对象。
我使用这些命令转换了从 AlexeyAB's repo 训练的暗网权重:
python save_model.py --weights yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-608-tf --input_size 608 --model yolov4 --tiny --framework tflite
python convert_tflite.py --weights ./checkpoints/yolov4-tiny-608-tf --output ./checkpoints/yolov4-tiny-608.tflite
您可以找到 convert_tflite.py here
第一个命令使用 numpy==1.19.0 成功。但是,第二个显示这些错误:
loc("batch_normalization/moving_mean"): error: is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
Traceback (most recent call last):
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 213, in toco_convert_protos
enable_mlir_converter)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\wrap_toco.py", line 38, in wrapped_toco_convert
enable_mlir_converter)
Exception: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "convert_tflite.py", line 76, in <module>
app.run(main)
File "C:\Python37\lib\site-packages\absl\app.py", line 303, in run
_run_main(main, args)
File "C:\Python37\lib\site-packages\absl\app.py", line 251, in _run_main
sys.exit(main(argv))
File "convert_tflite.py", line 71, in main
save_tflite()
File "convert_tflite.py", line 45, in save_tflite
tflite_model = converter.convert()
File "C:\Python37\lib\site-packages\tensorflow\lite\python\lite.py", line 762, in convert
result = _convert_saved_model(**converter_kwargs)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 648, in convert_saved_model
enable_mlir_converter=True)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 216, in toco_convert_protos
raise ConverterError(str(e))
tensorflow.lite.python.convert.ConverterError: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
我尝试过其他版本的 Tensorflow(2.2、2.3、2.4),但没有成功。 我该怎么办?
此处提出了类似的问题:Tensorflow Issue 44790
这是我的系统详细信息:
Windows10,x64
GeForce GTX 1060
NVIDIA 驱动程序 460.89
CUDA 11.0.3
CuDNN 8.0.5.39
Python3.7.2
pip install tensorflow==2.3.0rc0
并在开始转换前重启运行时
我通过关注 Github 问题的帖子解决了这个问题。
在 google colab 中,如果我使用默认的 TF 版本,即 2.4.0 或更高版本,我会遇到这个问题。
运行 !pip install tensorflow==2.3.0
并重新启动运行时,然后转换更正了问题。
对我来说,这解决了我的问题:
import tensorflow as tf
if tf.__version__ != '2.3.0-rc0':
!pip uninstall -y tensorflow
!pip install tensorflow-gpu==2.3.0rc0
并重新启动运行时,以便使用新安装的版本。
我想在 Tensorflow lite 框架中使用 yolov4-tiny 来计算视频中穿过虚拟线的对象。
我使用这些命令转换了从 AlexeyAB's repo 训练的暗网权重:
python save_model.py --weights yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-608-tf --input_size 608 --model yolov4 --tiny --framework tflite
python convert_tflite.py --weights ./checkpoints/yolov4-tiny-608-tf --output ./checkpoints/yolov4-tiny-608.tflite
您可以找到 convert_tflite.py here
第一个命令使用 numpy==1.19.0 成功。但是,第二个显示这些错误:
loc("batch_normalization/moving_mean"): error: is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
Traceback (most recent call last):
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 213, in toco_convert_protos
enable_mlir_converter)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\wrap_toco.py", line 38, in wrapped_toco_convert
enable_mlir_converter)
Exception: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "convert_tflite.py", line 76, in <module>
app.run(main)
File "C:\Python37\lib\site-packages\absl\app.py", line 303, in run
_run_main(main, args)
File "C:\Python37\lib\site-packages\absl\app.py", line 251, in _run_main
sys.exit(main(argv))
File "convert_tflite.py", line 71, in main
save_tflite()
File "convert_tflite.py", line 45, in save_tflite
tflite_model = converter.convert()
File "C:\Python37\lib\site-packages\tensorflow\lite\python\lite.py", line 762, in convert
result = _convert_saved_model(**converter_kwargs)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 648, in convert_saved_model
enable_mlir_converter=True)
File "C:\Python37\lib\site-packages\tensorflow\lite\python\convert.py", line 216, in toco_convert_protos
raise ConverterError(str(e))
tensorflow.lite.python.convert.ConverterError: <unknown>:0: error: loc("batch_normalization/moving_mean"): is not immutable, try running tf-saved-model-optimize-global-tensors to prove tensors are immutable
我尝试过其他版本的 Tensorflow(2.2、2.3、2.4),但没有成功。 我该怎么办?
此处提出了类似的问题:Tensorflow Issue 44790
这是我的系统详细信息: Windows10,x64 GeForce GTX 1060 NVIDIA 驱动程序 460.89 CUDA 11.0.3 CuDNN 8.0.5.39 Python3.7.2
pip install tensorflow==2.3.0rc0
并在开始转换前重启运行时
我通过关注 Github 问题的帖子解决了这个问题。
在 google colab 中,如果我使用默认的 TF 版本,即 2.4.0 或更高版本,我会遇到这个问题。
运行 !pip install tensorflow==2.3.0
并重新启动运行时,然后转换更正了问题。
对我来说,这解决了我的问题:
import tensorflow as tf
if tf.__version__ != '2.3.0-rc0':
!pip uninstall -y tensorflow
!pip install tensorflow-gpu==2.3.0rc0
并重新启动运行时,以便使用新安装的版本。