tensorflow - 将模型优化器用于 tensorflow slim 模型
问题描述
我的目标是使用英特尔 OpenVINO 优化器推断 tensorflow slim 模型。使用开放的 vino 文档和幻灯片进行推理,使用tf slim 文档进行模型训练。
这是一个多类分类问题。我从头开始训练了 tf slim mobilnet_v2 模型(使用 sript train_image_classifier.py)。在测试集上对训练模型的评估给出了相对较好的结果(使用脚本 eval_image_classifier.py):
评估/准确度[0.8017]评估/召回_5[0.9993]
但是,没有保存单个.ckpt
文件(即使在 train_image_classifier.py 运行结束时有类似“model.ckpt is saved to checkpoint_dir”之类的消息),而是有 3 个文件(.ckpt-180000.data-00000-of-00001
, .ckpt-180000.index
, .ckpt-180000.meta
)。
OpenVINO 模型优化器需要一个检查点文件。
根据文档,我使用以下参数调用mo_tf.py :
python mo_tf.py --input_model D:/model/mobilenet_v2_224.pb --input_checkpoint D:/model/model.ckpt-180000 -b 1
它给出了错误(如果通过 --input_checkpoint D:/model/model.ckpt 则相同):
[ ERROR ] The value for command line parameter "input_checkpoint" must be existing file/directory, but "D:/model/model.ckpt-180000" does not exist.
错误信息很清楚,磁盘上没有这样的文件。但据我所知,大多数 tf 实用程序在后台将 .ckpt-????.meta 转换为 .ckpt。
试图打电话:
python mo_tf.py --input_model D:/model/mobilenet_v2_224.pb --input_meta_graph D:/model/model.ckpt-180000.meta -b 1
原因:
[ ERROR ] Unknown configuration of input model parameters
对我来说,将图形转换为 OpenVINO 中间表示的方式并不重要,只需要达到该结果即可。
非常感谢。
编辑
我设法在 tf slim 模型的冻结图上运行 OpenVINO 模型优化器。但是我仍然不知道为什么我之前的尝试(基于文档)失败了。
解决方案
您可以尝试将模型转换为冻结格式 (.pb),然后使用 OpenVINO 转换模型。
.ckpt-meta 有元图。没有变量值的计算图结构。您可以在 tensorboard 中观察到的那个。
.ckpt-data 具有变量值,没有骨架或结构。要恢复模型,我们需要元文件和数据文件。
.pb 文件保存整个图形(元+数据)
根据 OpenVINO 的文档:
在 Python* 代码中定义网络时,您必须创建推理图文件。通常,图表以允许模型训练的形式构建。这意味着所有可训练的参数都表示为图中的变量。要将图形与模型优化器一起使用,它应该被冻结。 https://software.intel.com/en-us/articles/OpenVINO-Using-TensorFlow
OpenVINO 通过转换以冻结形式传递的加权图来优化模型。
推荐阅读
- java - 使用 maven-assembly-plugin 创建的 Jar 未与 mvn install 一起运行
- javascript - 如何在javascript中隐藏和显示sidenavbar
- flutter - Flutter Web PWA Top Notch 被砍掉
- javascript - 使用 Node.js 和 MongoDB 在 CRUDE 应用程序中更新复选框
- android - SHA-1 密钥在 android studios 中不可见
- python - 创建按钮网格时如何避免重复代码?
- python - Python - Networkx 为每条边创建一个具有自定义键概率的随机图
- mysql - SQL找出拥有另一个权限的所有用户的每个权限有多少用户(BITWISE)
- c# - 将sql语句转换为linq(使用where条件连接两个表)
- django - 获取 django-rest-framework 中包含特定标签的所有元素