我正在尝试使用以下代码读取文件。
precomputed = pickle.load(open('test/vgg16_features.p', 'rb'))
features = precomputed['features']但是得到这个错误。
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 5: ordinal not in range(128)我尝试读取的文件包含使用深度神经网络提取的图像特征。文件内容如下所示。
(dp0
S'imageIds'
p1
(lp2
I262145
aI131074
aI131075
aI393221
aI393223
aI393224
aI524297
aI393227
aI393228
aI262146
aI393230
aI262159
aI524291
aI322975
aI131093
aI524311
....
....
....请注意,这是一个大文件,大小为2.8 of。
我知道这是一个重复的问题,但我遵循了其他stackoverflow帖子中的建议解决方案,但无法解决它。任何帮助都将不胜感激!
发布于 2017-02-26 01:47:58
最后我找到了解决方案。问题实际上是关于unpickling a python 2 object with python 3的,我一开始无法理解它,因为我得到的pickle文件是通过Python2程序编写的。
多亏了this answer,它解决了这个问题。因此,我需要做的就是将pickle.load()函数的encoding参数设置为latin1,因为latin1可以处理任何输入,因为它将字节值0-255直接映射到前256个Unicode码点。
所以,下面的方法对我很有效!
precomputed = pickle.load(open('test/vgg16_features.p', 'rb'), encoding='latin1')https://stackoverflow.com/questions/42452255
复制相似问题