问题描述
接着上文我们继续看,会发现又出现了新的问题。
再继续往下面执行,发现又报错了
具体报错内容如下:
Traceback (most recent call last):
File "/media/visionx/monica/newproject/chineseocr/app.py", line 46, in <module>
from text.keras_detect import text_detect
File "/media/visionx/monica/newproject/chineseocr/text/keras_detect.py", line 20, in <module>
textModel.load_weights(kerasTextModel)
File "/home/visionx/anaconda3/envs/chineseocr/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/network.py", line 1190, in load_weights
saving.load_weights_from_hdf5_group(f, self.layers)
File "/home/visionx/anaconda3/envs/chineseocr/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/saving.py", line 671, in load_weights_from_hdf5_group
original_keras_version = f.attrs['keras_version'].decode('utf8')
AttributeError: 'str' object has no attribute 'decode'
原因分析及解决
可以看出来,是没有这个decode属性,我们找到出错的地方
报错显示没这个属性,但是为什么会出现这个问题呢?代码又不是我写的,环境也是按照他的配置的,还是会报错 :
出现这个问题可能是两个原因造成的:
1、Python2和Python3在字符串编码上的区别。
2、Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode
原因一的解决方法:
print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来
参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/python-string-endec.html
原因二的解决方法:各种编码方式尝试解决:utf-8,gbk,ISO-8859-1,gb2312
原因一才是主要原因,主要解决方法。
这个时候还是不太确定是什么原因的,但有一点,在我们之前学习python的时候有一节编码和解码 【python学习过程--day9】python中的字符集、编码和解码、运算符-CSDN博客
这个时候我们就明白了,在前面应该有一个编码的操作,但我们就需要全部看代码了,这样会比较麻烦,因为有的时候当我们不给其编码,也可以按照需要解码成一定的格式。原因很简单啊,ide有默认的编码格式!
在此,给出我的解决办法:将上面的代码改为下面的
if 'keras_version' in f.attrs:
original_keras_version = f.attrs['keras_version'].decode('utf8')
else:
original_keras_version = '1'
if 'backend' in f.attrs:
original_backend = f.attrs['backend'].decode('utf8')
else:
original_backend = None
将上面的代码改为下面的:
if 'keras_version' in f.attrs:
original_keras_version = f.attrs['keras_version']
else:
original_keras_version = '1'
if 'backend' in f.attrs:
original_backend = f.attrs['backend']
else:
original_backend = None
这个时候再运行就可以了!看个效果图:
相关链接
AttributeError: ‘str‘ object has no attribute ‘decode‘解决方法_attributeerror: 'str' object has no attribute 'dec-CSDN博客文章浏览阅读10w+次,点赞103次,收藏180次。出现这个问题可能是两个原因造成的:1、Python2和Python3在字符串编码上的区别。2、Python 3.4: str : AttributeError: ‘str’ object has no attribute 'decode原因一的解决方法:print (‘张俊’.encode(‘utf-8’). decode(‘utf-8’) ) #必须将字节字符串解码后才能打印出来参考链接:https://www.cnblogs.com/geekard/archive/2012/10/04/py_attributeerror: 'str' object has no attribute 'decodehttps://blog.csdn.net/qq_43192819/article/details/108981008【python学习过程--day9】python中的字符集、编码和解码、运算符-CSDN博客文章浏览阅读993次,点赞18次,收藏16次。当我们编译运行一个py文件(test.py)的时候,Python 编译器首先会对文件 test.py 进行读取,然后默认对数据进行 UTF-8 的解码,然后编译运行,程序跑了起来。我们知道,数据的解码和编码都是成对的,且需要采取相同的编码方式,否则解码的数据就会和原数据不一样…在计算机中,文本数据存储和传输时,需要将字符编码为字节序列,通常使用的编码方式有 UTF-8、UTF-16、ASCII 等。文件操作是 Python 编程中常用的功能之一,可以用于处理各种类型的文件,例如文本文件、二进制文件等。https://blog.csdn.net/BetrayFree/article/details/137386118?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137386118%22%2C%22source%22%3A%22BetrayFree%22%7D
完结撒花
我就是无法无天的小畜生,谁都敢骂的小畜生!