C++ 中的 readNetFromTensorflow 错误

2024-03-27

我是深度学习的新手。第一步,我使用 keras 在 python 中创建并训练一个模型,并通过以下代码冻结:

def export_model(MODEL_NAME, input_node_name, output_node_name):

    tf.train.write_graph(K.get_session().graph_def, 'out', \
        MODEL_NAME + '_graph.pbtxt')

    tf.train.Saver().save(K.get_session(), 'out/' + MODEL_NAME + '.chkp')

    freeze_graph.freeze_graph('out/' + MODEL_NAME + '_graph.pbtxt', None, \
        False, 'out/' + MODEL_NAME + '.chkp', output_node_name, \
        "save/restore_all", "save/Const:0", \
        'out/frozen_' + MODEL_NAME + '.pb', True, "")

    input_graph_def = tf.GraphDef()
    with tf.gfile.Open('out/frozen_' + MODEL_NAME + '.pb', "rb") as f:
        input_graph_def.ParseFromString(f.read())

    output_graph_def = optimize_for_inference_lib.optimize_for_inference(
            input_graph_def, [input_node_name], [output_node_name],
            tf.float32.as_datatype_enum)

    with tf.gfile.FastGFile('out/opt_' + MODEL_NAME + '.pb', "wb") as f:
        f.write(output_graph_def.SerializeToString())

它的输出:

  • 检查站
  • 型号.chkp.data-00000-of-00001
  • 模型.chkp.index
  • 模型.chkp.meta
  • 模型图.pbtxt
  • 冻结_模型.pb
  • opt_Model.pb

当我想通过 readNetFromTensorflow 读取 opencv c++ 中的网络时:

String weights = "frozen_Model.pb";
String pbtxt = "Model_graph.pbtxt";
dnn::Net cvNet = cv::dnn::readNetFromTensorflow(weights, pbtxt);

这会出错:

OpenCV(4.0.0-pre)错误:未指定错误(失败:ReadProtoFromBinaryFile(param_file,param)。无法解析 GraphDef 文件:frozen_Model.pb)在 cv::dnn::ReadTFNetParamsFromBinaryFileOrDie,文件 D:\LIBS\OpenCV-4.00 \modules\dnn\src\tensorflow\tf_io.cpp,第 44 行

and

OpenCV(4.0.0-pre)错误:cv::dnn::experimental_dnn_v4::`anonymous-namespace'::addConstNodes、文件中的断言失败(const_layers.insert(std::make_pair(name, li)).second) D:\LIBS\OpenCV-4.00\modules\dnn\src\tensorflow\tf_importer.cpp,第 555 行

如何修复这个错误?


阿明,我可以请你尝试在测试模式下保存图表吗:

K.backend.set_learning_phase(0)  # <--- This setting makes all the following layers work in test mode

model = Sequential(name = MODEL_NAME)
model.add(Conv2D(filters = 128, kernel_size = (5, 5), activation = 'relu',name = 'FirstLayerConv2D_No1',input_shape = (Width, Height, image_channel)))
...
model.add(Dropout(0.25))
model.add(Dense(100, activation = 'softmax', name = 'endNode'))

# Create a graph definition (with no weights)
sess = K.backend.get_session()
sess.as_default()
tf.train.write_graph(sess.graph.as_graph_def(), "", 'graph_def.pb', as_text=False)

然后用新创建的文件冻结你的检查点文件graph_def.pb by a freeze_graph.py https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/python/tools/freeze_graph.py脚本(不要忘记使用--input_binary flag).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的 readNetFromTensorflow 错误 的相关文章

  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • 为什么 VB.NET 和 C# 中针对值检查 null 存在差异?

    In VB NET http en wikipedia org wiki Visual Basic NET有时候是这样的 Dim x As System Nullable Of Decimal Nothing Dim y As System
  • 如何使用 MVVM 更新 WPF 中编辑的数据? [复制]

    这个问题在这里已经有答案了 我正在为聊天应用程序构建 UI 设计 在尝试更新所选联系人的消息时遇到问题 选择现有联系人 选择编辑选项 然后编辑其属性 例如用户名和图像 后 唯一进行的更改是联系人的用户名和图像 我仍然想更改 MessageM
  • 访问“if”语句之外的变量

    我怎样才能使insuranceCost以外可用if陈述 if this comboBox5 Text Third Party Fire and Theft double insuranceCost 1 在 if 语句之外定义它 double
  • 从 future 中检索值时的 SIGABRT

    我在使用 C 11 future 时遇到问题 当我打电话时wait or get 关于返回的未来std async 程序接收从mutex标头 可能是什么问题呢 如何修复它 我在 Linux 上使用 g 4 6 将以下代码粘贴到 ideone
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • 在tensorflow .ckpt文件中使用预训练模型

    我有一个 ckpt 文件 我只想得到 cnn 的权重 我已经从 ckpt 检查点文件中进行了训练 inception resnet v2 2016 08 30 import tensorflow as tf saver tf train S
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul
  • 如何使用 Python 将我的 GoPro Hero 4 相机直播连接到 openCV?

    我在尝试从我的新 GoPro Hero 4 相机捕获实时流并使用 openCV 对其进行一些图像处理时遇到麻烦 这是我的试用 创建的窗口上没有显示任何内容 import cv2 import argparse import time imp
  • C# 粘贴到文本框时检查剪贴板中的字符

    有没有一些方法可以在粘贴到文本框 C 之前仅检查剪贴板中的字符 Ctrl V 和右键单击 gt 粘贴 但不使用 MaskedTextbox 在文本框文本更改中添加规则以仅接受数字 例如 private string value privat
  • 无法使 Polly 超时策略覆盖 HttpClient 默认超时

    我正在使用 Polly 重试策略 并且正如预期的那样 在重试过程中HttpClient达到 100 秒超时 我尝试了几种不同的方法来合并 Polly 超时策略 将超时移至每次重试而不是总计 但 100 秒超时仍然会触发 我读过大约 5 个

随机推荐

  • 比较 sbt 和 Gradle [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在深入研究 Scala 并注意到 sbt 我对 java groovy 项目中的 Gradle 非常满意 而且我知道 Gradle 有一个
  • 使用 R 在时间序列图中标记 X 轴

    我对 R 有点陌生 一般绘图经验有限 我已经能够使用zoo将我的数据作为R中的时间序列对象来获取 但是我很难正确标记xaxis 如果这一切的话 当我绘制动物园对象时 plot z x 轴仅显示一个标签 即 2010 年 该系列从 2009
  • 在Javascript中实现迷宫生成算法[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我了解 深度优先 迷宫生成算法 但我
  • 在每第 3 个 div Jquery 之后附加 Span 标签

    我正在寻找在每三个 div 标签之后放置一个 span 标签的解决方案 HTML div class grid 15 div class grid 5 p Sun p div div class suggest nudge up span
  • 护照认证失败导致重定向循环

    我正在使用带有 Facebook 身份验证的 Node Express 和 Passport 我有以下路线 当 facebook auth callback是回调url function render page req res var us
  • 不推荐使用带大括号的数组和字符串偏移访问语法

    我刚刚将我的 php 版本更新到 7 4 我注意到弹出了这个错误 不推荐使用带大括号的数组和字符串偏移访问语法 这是我的代码的一部分 它触发了上述错误 public function getRecordID string zoneID st
  • 无法在 IOS 上通过 CORS 发送凭据

    我有一个恶作剧问题 在解决这个问题很长时间后我来找你 我有一个具有以下规格的混合应用程序 Ionic 3 9 2 Angular 5 2 11 Cordova Android 8 1 0 and iOS 5 1 1 Cordova 8 0
  • UISearchBar显示错误:文本太左,与放大镜图标重叠

    我遇到了最奇怪的显示错误UISearchBar 这是我的代码 在另一个应用程序中完美运行 我在代码中创建搜索栏 因为 xib 文件不可行 searchBar UISearchBar alloc initWithFrame CGRectMak
  • 将 ForEach 与绑定数组一起使用 (SwiftUI)

    我的目标是从 JSON 动态生成表单 除了生成 FormField 视图 基于 TextField 并绑定到动态生成的视图模型列表之外 我已将所有内容放在一起 如果我将 FormField 视图替换为普通的 Text 视图 则效果很好 请参
  • 如何以编程方式设置开始标签和结束标签之间的文本格式,然后删除标签

    编辑 以下工作与 Google Apps 脚本有关 用于格式化 Google 文档中的文本 我不熟悉 JavaScript 实际上只完成了一些 R 编码 因此这项工作是对我可以在 google 上搜索到的内容进行一些解析以及一些尝试和错误
  • 是否有使用游标或智能获取的 Ruby ORM?

    我正在寻找 Ruby ORM 来替代 ActiveRecord 我一直在研究 Sequel 和 DataMapper 它们看起来不错 但似乎都没有做基本的事情 当您不需要时 不将所有内容加载到内存中 我的意思是我已经在有很多行的表上的 Ac
  • 如何从 Android 调用 RESTful Web 服务?

    我已经使用 jersey 框架和 java 在 netbean IDE 中编写了 REST Web 服务 对于每个请求用户都需要提供用户名和密码 我知道身份验证不好 使用curl命令 例如 curl u 用户名 密码 X PUThttp l
  • 如何在基于非文档的 Storyboard 应用程序中处理 applicationShouldHandleReopen

    我能想到的最好的办法是 func applicationShouldHandleReopen sender NSApplication hasVisibleWindows flag Bool gt Bool if flag let sb N
  • 在 Windows 上的 Qt Creator 中编译 Cuda 代码

    几天来我一直在尝试获取在 32 位 Windows 7 系统上运行的 Qt 项目文件 我希望 需要在其中包含 Cuda 代码 这种组合要么非常简单 以至于没有人愿意在网上放一个例子 要么非常困难 似乎没有人成功 不管怎样 我发现的唯一有用的
  • 如何使用 Spring Boot 设置速度模板字符编码?

    我的模板使用 UTF 8 作为编码 但我的 Web 应用程序的输出不正确 问题是速度认为我的模板具有 ISO 8859 1 作为编码 因为这是以下输出 System out println ctx getBean VelocityEngin
  • 在 PHP 中使用命名空间解析 XML 数据

    我正在尝试使用这个使用命名空间的 XML 提要 但我无法跳过标签中的冒号 XML 提要如下所示
  • 如何在 Laravel 中动态创建子域?

    在我的 Windows System32 drivers etc 中hosts 我有这个 127 0 0 1 localhost 127 0 0 1 site dev 127 0 0 1 site dev 在我的 xampp apache
  • 如何用制表符替换换行符?

    我有如下所示的图案 hi hello hallo greetings salutations no more hello for you 我正在尝试使用以下命令用制表符替换所有换行符 sed e s n t g 但它不起作用 有人可以帮忙吗
  • 在哪里可以了解有关 C++0x 的更多信息? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C++ 中的 readNetFromTensorflow 错误

    我是深度学习的新手 第一步 我使用 keras 在 python 中创建并训练一个模型 并通过以下代码冻结 def export model MODEL NAME input node name output node name tf tr