在冻结图上使用 optimize_for_inference.py 后使用模型时出错

2023-12-14

我正在使用tensorflows script optimize_for_inderence.py on the ssd_mobilenet_v1_coco model使用以下命令:

python -m tensorflow.python.tools.optimize_for_inference \
    --input /path/to/frozen_inference_graph.pb \
    --output /path/to/optimized_inference_graph.pb \
    --input_names=image_tensor \
    --output_names=detection_boxes,detection_scores,num_detections,detection_classes

它工作没有错误,但如果我想使用创建的Model .pb归档Tensorboard or for Inference它给了我以下错误:

ValueError: graph_def 在节点 u'ToFloat' 处无效:输入张量 'image_tensor:0' 无法将 float32 类型的张量转换为 uint8 类型的输入。

查看 Tensorboard 可视化的原始图:

正如你所看到的节点ToFloat直接出现在image_tensor input

所以显然优化出了问题。但什么?


当加载由optimize_for_inference工具生成的模型文件时,我看到类似的错误“节点ExpandDims_6的输入0从input_feed传递float:0与预期的int64不兼容”。

皮特的评论“删除未使用的节点的新图形转换方法可能更强大?https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/graph_transforms/#optimizing-for-deployment" on https://github.com/tensorflow/tensorflow/issues/8242似乎建议我们应该使用新的transform_graph工具。

更新后的 TensorFlow Mobile 文档中没有提及 optimize_for_inference 工具https://www.tensorflow.org/mobile还建议使用transform_graph工具。

正当我怀疑罪魁祸首出在优化工具时,我看到了你的问题。谢谢你......刚刚尝试了transform_graph工具,它可以工作,无论是转换后的模型还是转换后的进一步memmapping模型。下面是我使用的 3 个 freeze-transform-memmapped 命令:

python tensorflow/python/tools/freeze_graph.py  \
--input_meta_graph=/tmp/ckpt4.meta \
--input_checkpoint=/tmp/ckpt4 \
--output_graph=/tmp/ckpt4_frozen.pb \
--output_node_names="softmax,lstm/initial_state,lstm/state" \
--input_binary=true

bazel-bin/tensorflow/tools/graph_transforms/transform_graph \
--in_graph=/tmp/ckpt4_frozen.pb \
--out_graph=/tmp/ckpt4_frozen_transformed.pb \
--inputs="convert_image/Cast,input_feed,lstm/state_feed" \
--outputs="softmax,lstm/initial_state,lstm/state" \
--transforms='
      strip_unused_nodes(type=float, shape="1,299,299,3")
      fold_constants(ignore_errors=true) 
      fold_batch_norms
      fold_old_batch_norms'  


bazel-bin/tensorflow/contrib/util/convert_graphdef_memmapped_format \
--in_graph=/tmp/ckpt4_frozen_transformed.pb \
--out_graph=/tmp/ckpt4_frozen_transformed_memmapped.pb
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在冻结图上使用 optimize_for_inference.py 后使用模型时出错 的相关文章

随机推荐

  • javaws 退出代码真的被破坏了吗?

    我正在努力使用 JNLP 自动执行相同的 java 代码 我惊讶地发现 jamaws 没有给我一个有效的返回代码 原来的执行行是 javaws wait http example com 666 missing jnlp 这确实显示了一个丑
  • Angular 2 Http.get 没有响应

    我正在使用 Http get 检索配置文件 我已经成功做过很多次了 但这次却一无所获 我在控制台中没有看到跟踪 也没有看到错误 即使我使用的是 catch 我这里可能有什么问题 this http get assets dashboard
  • 如何使用 python selenium 在 React-Select Component 下拉列表中选择值?

    selenium 和 HTML 非常新 我想从网站中选择一个下拉列表 这type被隐藏 我只想通过或选择其中之一male or female从下拉列表中或将其传递到value变量 我该怎么做 我使用 Chrome 中的检查元素来确定下面的两
  • 角度单选按钮:选中

    在简单的 html 和 css 中 我可以执行以下操作 input checked label background color f00 div class col xs 6 div
  • NSNumber 与 NSArray 的原始 int

    我正在使用 Mac OSX 版 Cocoa 编程 第四版来学习 Objective C Cocoa 我对这个基本问题表示歉意 但我是那些真正需要了解一切事物内部结构才能对我有意义的人之一 而这本书并不总是能满足我的需求 我已经学习了 C 的
  • 对视图的显示进行动画处理

    我在视图上添加了一个按钮 视图与按钮大小相同 单击该按钮时 必须显示一个新视图 因此 在按钮的事件处理程序中 我将 newview 添加为添加按钮的视图的子视图 以便在单击按钮时显示 newview 我需要做的事情是 当我单击按钮时 必须从
  • Git:合并错误,然后恢复合并。现在无法再次合并分支

    我在 git 方面遇到了一点麻烦 这就是我所做的 我将最新的 master 合并到我的分支并推送它 后来意识到这个合并已损坏并恢复了合并 现在我正在尝试再次合并master 它说它是最新的 我能知道如何强制将 master 的所有更改合并到
  • AtomicInteger 的 getAndIncrement 实现

    AtomicInteger 的 getAndIncrement 实现执行以下操作 public final int getAndIncrement for int current get Step 1 get returns the vol
  • 保存 UITextField 测试的最佳方法:textFieldShouldReturn 或 textFieldDidEndEditing

    我的目标只是在用户单击键盘上的完成按钮后将文本保存在 UITextField 上 我可以在 extFieldShouldReturn 或 textFieldDidEndEditing 中执行此操作 有什么区别吗 还是有更好的方法 Thank
  • USB 调制解调器回显错误的字符

    我在 ttyACM0 端口上连接了 USB 调制解调器 当我打开 Minicom 之类的应用程序并尝试向其发送一些命令时 回显并不总是我输入的内容 例如 如果我输入 A 则会得到 如果我输入 T 我就会得到 T 串行端口似乎正在剥离我的传输
  • 如何使用 VBA 将图像嵌入到 Outlook 电子邮件中

    非常密切相关在outlook邮件正文中嵌入图片excel vba 我正在尝试将图像嵌入到 Outlook 电子邮件中 我正在使用以下代码片段 其中一半是从上面的帖子中窃取的 Sub PictureEmail Dim outApp As Ne
  • 只有一个 TRUE 复选框

    我有一列复选框 如果选中一个框 它将为另一个工作表中的单元格设置一个值 如果我选中 1 号框 它就会变为 true 而其余的仍然为 false 然后 如果我选中 2 号框 它也会随着 1 号框而变为 true 而其余的仍然为 false 这
  • DocuSign 认证的严格性

    来自 DocuSign API 要求信息 Y 我们的 API 认证审核涉及验证您是否每 15 分钟每个唯一信封的状态请求不超过 1 个 以便对以下方法进行轮询合规性 REST API GET accounts accountId envel
  • Windows 窗体中的多个用户

    我正在做一个项目 我需要一些实施想法 到目前为止我使用的是Windows 窗体 该应用程序将由同一台电脑上的不同用户使用 我不是一个善于交际的人 所以我会给你一个场景 1 该应用程序首先显示一个登录表单 2 用户 John 进入应用程序并通
  • 如何解决 JetBrains WebStorm“未解析的变量 webServ”警告?

    我正在利用WebStorm集成开发环境对于 Node js 开发 我正在尝试清除所有 WebStorm 警告和错误 剩下的错误是 未解析的变量 webServ 警告 但 req params webServ 的使用是正确的 我不想只删除 W
  • 如何在 C# 中将默认的 FlushMode 更改为 Commit?

    所以 已经说过了 如何改变FlushMode to Commit in C 我的意思是 在 Fluent NHibernate 中 FlushMode 默认设置为 Auto 所以 将 FluentMode 设置为Commit 我需要打开会话
  • 如何验证 JasperReports 中的空报表?

    我的情况是 当我无法通过查询检索 jasper 文件中的任何内容时 仍然会生成报告 我正在使用这行代码来生成报告 ByteArrayOutputStream baos new ByteArrayOutputStream JasperPrin
  • 重新抛出异常:为什么该方法在没有 throws 子句的情况下编译?

    在下面的源代码中我重新抛出一个Exception 为什么没有必要把throws方法签名上的关键字 public void throwsOrNotThrowsThatsTheQuestion try Any processing catch
  • 如何将 UserControl 放入 Visual Studio 工具箱

    我在项目中制作了一个用户控件 构建项目后 我需要将其放入我的工具箱中 并将其用作常用控件 但我不能 这UserControl位于我的项目命名空间中 我尝试过Choose Item在右键菜单中 但我没有找到添加它的方法 我在让它们自动添加到工
  • 在冻结图上使用 optimize_for_inference.py 后使用模型时出错

    我正在使用tensorflows script optimize for inderence py on the ssd mobilenet v1 coco model使用以下命令 python m tensorflow python to