我已经调试了一段时间了。我开发了一个LSTM编码器解码器模型,计划在C ++中进行部署。
将模型保存为.pb文件格式后,我能够导入模型和数据并将其部署在python中。但是,当我尝试使用C ++ API导入图形时,该函数TF_GraphImportGraphDef()
返回TF_NOT_FOUND的错误代码。我怀疑,这是因为我正在使用光束搜索方法,并且在Windows上使用Bazel生成的运算符GatherTree
不包含操作符tensorflow.dll/lib
。
我想知道是否有人曾经遇到过这个问题或有任何解决方案。
链接到_beam_search_ops.dll
一个可行的解决方案吗?我也使用中提供的TF_LoadLibrary()
功能进行了尝试c_api.h
。但是,我无法加载该库。
任何输入将不胜感激。另外,我正在使用tensorflow版本1.14。
因此,我深入研究并设法找到了以下问题的解决方案,使我能够使用C ++ API成功加载LSTM编码器解码器保存的模型:
TF_NOT_FOUND错误:错误消息如下:消息:Op类型未在LAPTOP-5R9P6BHL上运行的二进制文件中注册“ GatherTree”。确保在此过程中运行的二进制文件中注册了Op和Kernel。请注意,如果要从tf.contrib加载使用了ops的已保存图形,tf.contrib.resampler
则应在导入图形之前进行访问(例如),因为contrib ops是在首次访问模块时被延迟注册的。在此阶段,我仅将tensorflow.dll和tensorflow.lib链接到我的C ++项目。一个可能的解决方案是其中包含了定义链接库收集树运,这是_beam_search_ops.dll。
找不到_beam_search_ops.dll错误:尝试从c_api.h使用TF_LoadLibrary()加载库时,观察到此错误。在研究了一些有关堆栈溢出的帖子之后,似乎该库依赖于python37.dll和_pywrap_tensorflow_internal.pyd库。链接了这两个库之后,我成功地加载了_beam_search_ops.dll。
TF_INVALID_ARGUMENT错误:即使在加载_beam_search_ops.dll库之后,图形导入也会失败,并带有无效的参数错误。在读取错误消息时,我意识到这是由于tensorflow V1.13生成了_beam_search_ops.dll和_pywrap_tensorflow_internal.pyd以及tensorflow V1.14生成了tensorflow.dll / lib和.pb文件所致。当我从tensorflow V1.14版本链接_beam_search_ops.dll和_pywrap_tensorflow_internal.pyd时,图的加载成功,并且我能够读取图的内容。
如果有人对此问题有更好的解决方案,请在此处发布。谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句