tensorflow - OSError:SavedModel 文件不存在,使用 Tensorflow Lite
问题描述
我正在尝试使用以下代码段将此处找到的 Keras 模型转换为 TFlite
import tensorflow as tf
import os.path as path
pwd = path.dirname(__file__)
model_path = pwd+"/models/old-models/"
print("PWD: ", model_path)
converter = tf.lite.TFLiteConverter.from_saved_model(model_path)
tflite_model = converter.convert()
with open('model.tflite', 'wb') as f:
f.write(tflite_model)
但我收到以下错误
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/<PyCharm installed directory>/ch-0/211.6693.23/plugins/python/helpers/pydev/_pydev_bundle/pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "/<PyCharm installed directory>/ch-0/211.6693.23/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "/<Path to project>/myproject/convert_to_tflite.py", line 7, in <module>
converter = tf.lite.TFLiteConverter.from_saved_model(model_path)
File "/<path to miniconda>/miniconda3/envs/myproject/lib/python3.8/site-packages/tensorflow/lite/python/lite.py", line 1069, in from_saved_model
saved_model = _load(saved_model_dir, tags)
File "/<path to miniconda>/miniconda3/envs/myproject/lib/python3.8/site-packages/tensorflow/python/saved_model/load.py", line 859, in load
return load_internal(export_dir, tags, options)["root"]
File "/<path to miniconda>/miniconda3/envs/myproject/lib/python3.8/site-packages/tensorflow/python/saved_model/load.py", line 871, in load_internal
loader_impl.parse_saved_model_with_debug_info(export_dir))
File "/<path to miniconda>/miniconda3/envs/myproject/lib/python3.8/site-packages/tensorflow/python/saved_model/loader_impl.py", line 56, in parse_saved_model_with_debug_info
saved_model = _parse_saved_model(export_dir)
File "/<path to miniconda>/miniconda3/envs/myproject/lib/python3.8/site-packages/tensorflow/python/saved_model/loader_impl.py", line 111, in parse_saved_model
raise IOError("SavedModel file does not exist at: %s/{%s|%s}" %
OSError: SavedModel file does not exist at: /<path to my project>/models/old-models/{saved_model.pbtxt|saved_model.pb}
我将模型文件扩展名从 重命名.mlmodel
为.pb
,因为文件扩展名似乎需要为.pb
或.pbtxt
。我确信模型目录的路径是正确的。
我在用tensorflow~=2.4.1
解决方案
根据https://apple.github.io/coremltools/coremlspecification,.mlmodel 文件扩展名代表 CoreML 模型的一种格式。重命名文件扩展名不会将给定的模型格式更改为其他模型格式。
如果您想生成 TensorFlow Lite 模型,请查看指南页面上的预训练模型部分,https://www.tensorflow.org/lite/guide/get_started#1_choose_a_model。
推荐阅读
- docker - RPI:Ansible:没有可用于 docker-ce 的软件包
- c - (数据结构:链表)将奇数项移到列表的后面
- java - 当我将 Spring Boot 应用程序同时配置为 eureka 服务器和客户端时出错
- java - 如何将 Jhipster 堆栈部署到 AWS
- python - 如何在 Kivy 的 ScrollView 中添加不同的项目?
- vue.js - 如何在 Vue.js 中获取标题
- amazon-web-services - 是否可以从现有的 x86-64 映像构建 arm64 映像?
- extjs - 从其他域加载 Ext.grid.Panel
- node.js - 在多个 React 应用程序之间共享相同的 node_modules 文件夹
- swift - 属性声明了一个不透明的返回类型,但没有用于推断基础类型的初始化表达式