转换 tfjs 模型以在 c++ 中的 Tensorflow 中使用
Convert tfjs model for using in Tensorflow in c++
我是 tensorflow 的新手,我有一个问题,我的项目有两个主要部分,首先是用 NodeJs 编写的,从数据集训练我的模型并将模型保存到本地存储,所以我有两个文件:
- 模型.json
- 怀特斯.bin
第二部分是用 c++ 编写的,几天后我可以用 bazel 构建 tensorflow 并将其添加到我的 OpenCv 项目中,所以我的问题如下:
我想在 NodeJs 部分中训练我的模型,并在我的C++部分中使用这些模型。这可能吗? 我也看到了 tjs 转换器,但它将模型转换为在 NodeJs 中使用,反之亦然。
更新:经过大量搜索,我发现我应该将我的模型转换为 protobuff 文件,但 tfjs-Converter 不支持这种类型的转换,另一点是我想将我的模型与 opencv 库一起使用。
更新 2最后我可以将我的模型更改为 .pb 文件,首先我使用 tfjs_converter 转换为 keras 模型(.h5 文件),然后使用此 python 脚本转换为 .pb 文件,opencv 可以成功加载模型。但是我在使用模型时遇到了此错误:
libc++abi.dylib:以未捕获的类型异常终止 cv::异常: OpenCV(4.1.0)/tmp/opencv-20190505-12101-14vk1fh/opencv-4.1.0/modules/dnn/src/dnn.cpp:524: 错误:(-2:未指定的错误)无法创建图层 函数中"形状"类型的"flatten_Flatten1/形状" 'getLayerInstance'
有什么帮助吗?
谢谢
最后我解决了自己的问题。
这是我完成的步骤:
使用 tfjs- 转换器将我的 tfjs 模型转换为 keras 模型
- 使用此python脚本将keras(.h5)模型更改为冻结模型(.pb)
- 使用本教程优化我的 .pb 模型
最后一切都很好!
- 宏如何在Tensorflow中添加新的操作时"REGISTER_OP("ZeroOut")
- MatMul op 在 tensorflow 中是如何工作的?
- 保存在(Python)tensorflow中的权重未加载到C++tf中
- 使用客户端:: run and Clientsession:tensorflow中的feedType
- 转换 tfjs 模型以在 c++ 中的 Tensorflow 中使用
- 如何使用C API限制Tensorflow(R1.1)中的GPU使用率
- TensorFlow中的自定义资源
- Google Cloud ML引擎中的TensorFlow新OP
- tensorflow C API中的客户端和会话之间的差异
- TensorFlow从C 中的Graph Def获得形状
- 在Tensorflow中使用特征的C
- tensorflow C API中的float数据类型
- 关于Tensorflow和PyTorch中的自定义操作
- 在 TensorFlow 中加载自定义操作时出现未定义的符号错误
- 在Windows上使用C++中的tensorflow
- 在Tensorflow源代码中的Bool变量的初始化
- 无法获得新的 tf。在 Tensorflow 中的 Python shell 中工作的操作
- 理解TensorFlow中的Op注册和内核链接
- 在tensorflow中查找检测到的设备数量
- RNN在TensorFlow中的实时实现