源头
事情的开始是这样的: 想要跑一个yolo v3的baseline程序,但是使用服务器上的环境总是跑不通,服务器环境为 tensorflow gpu==1.3,keras==2.1.1。
问题
在跑程序时候老是遇到两个问题,第一个问题是 “AttributeError: module ‘tensorflow.python.ops.nn’ has no attribute ‘leaky_relu”,网上给出的答案是升级为keras ==2.1.2
,tensorflow-gpu==1.2.1,但是当我升级之后遇到报错“load_weights()中的未定义skip_mismatch关键字”,网上给出的答案是升级keras ==2.1.5,但是当升级后,又遇到错
“AttributeError: module ‘tensorflow.python.ops.nn’ has no attribute ‘leaky_relu”,这就搞得就像死循环一样,升级kreas版本到2.1.5报错,降低到2.1.2也报错,两个不一样的错,搞得不知道怎么办。
解决
最后的解决方法是不对keras调整,而是对tensorflow-gpu版本进行调整,可能上面问题的根本还是在这里,将其升级为tensorflow-gpu==1.4就能跑成功程序了,但是要注意keras版本应该跟tensorflow-gpu版本是配套的,不然以后也可能出现一些问题。
心得
1.注意tensorflow-gpu和cuda、cudnn之间的版本匹配,tensorflow和keras之间的版本匹配。
2.注意因为版本的问题会导致运行别人的源码容易报错,这个得注意修改,还有要尽量进行版本的更新,因为很多很功能都是在新版本中更新的,比如这里强大的leaky_relu激活函数很明显就是在tensorflow-GPU 1.3版本没有,在1.4版本新加入的。