您的位置:首页 > 运维架构 > Linux

linux Eclipse上c++调用使用了tensorflow库的python程序遇到的问题及解决方法

2017-03-17 16:31 1316 查看
1. PyImport_ImportModule()返回NULL

首先排查是否设置对了路径。

然后在后面加入语句,PyErr_Print(),这样python出现的错误就会在eclipse的控制台打印出来。非常有用。

我的问题出在import tensorflow这个语句中出现了,错误信息是:


'module' object has no attribute 'argv'


原因是:

tensorflow需要给程序传入命令行参数。

所以保证python文件有接收argv参数的main函数:

def main(argv=None):

然后在C++中加入传递参数的语句,以及给python设置程序的语句,设置程序的语句在初始化之前,传参要在之后:



这样就可以调用含有tensorflow库的python文件了。

2.第二个问题,我的程序的python部分的功能是用训练好的模型来预测c++产生的图片,调用python是在循环中多次调用。

发现第一次运行无误,第二次PyImport_ImportModule()直接报错退出,NULL都不返回。

解决方法是,将初始化传参以及设置系统路径的语句和Finalize语句放到循环外

3.第三个问题,终于可以运行后,python本身出现问题,依旧是第一次可以运行,第二次报错:

提示我网络的变量已经存在(应该是第一次运行的时候生成的):

解决方法是,在python结束前加入语句:

tf.reset_default_graph 释放掉网络
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐