项目场景:
由于某些原因犯傻了,卸了Anaconda然后重新装了一遍环境原本能用的YoLov3的代码就运行出如下错误!本人环境:python 3.6.5-Keras2.1.5-tensorflow-gpu1.6.0
————————————————————————————————————————————
问题描述:
AttributeError: ‘str’ object has no attribute ‘decode’
原因分析:
翻阅了几位作者的文章,最后从这篇文章受到了启发。大概意思就是说python3中字符串(str)类型默认不是字节(bytes),所以不能直接解码(decode),只能先编码(encode)转为字节(bytes),再解码(decode)。
一开始我也很犹豫,因为我的python版本和以前是一样的,以前并没有这个报错。但实在没看见别的靠谱的解决办法,就决定死马当活马医!然后就神奇地解决了,先赶紧去看解决方案试下吧(后面是些废话好用再回来看吧)!
虽说最后成功解决了,但我还是不认为是python版本的问题,因为我压根就没动过python。但重安前后我只有matplotlib和hdf5的版本变成最新的了。
解决方案:
<1>找到报错的decode的位置然后增加一个中间变量先encode再decode。
若你是yolov3的代码应该如下修改:
修改前:
修改后:
如果你不是yolov3代码也不要急,可以尝试自己写下,祝一切顺利!