首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pascal VOC泡菜数据集不能加载泡菜

Pascal VOC泡菜数据集不能加载泡菜
EN

Stack Overflow用户
提问于 2018-02-19 08:34:55
回答 1查看 409关注 0票数 1

我试图从斯坦福大学网站这里上加载Pascal数据集。还试图实现来自Pascal VOC Pystruct博客的语义图像分割的代码。但是当我试图加载泡菜文件时,我得到了UnicodeDecodeError。到目前为止,我尝试了下面的代码:

代码语言:javascript
复制
import numpy as np
try:
    import cPickle as pickle
except ImportError:
    import pickle

from pystruct import learners
import pystruct.models as crfs
from pystruct.utils import SaveLogger

data_train = pickle.load(open("trainingData/data_train.pickle"))
C = 0.01

我犯了个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/mypath/PycharmProjects/semantic_segmentation_ex/ex1.py", line 11, in <module>
    data_train = pickle.load(open("trainingData/data_train.pickle"))
  File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)

我找不到同样的问题和解决办法。我怎么才能让这个起作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-20 06:38:00

我的一个朋友告诉我原因。序列化对象是一个Python2对象,所以如果使用python2加载,它将直接打开,不会出现任何问题。

但是,如果您希望加载Python3,则需要添加编码参数,以选择而不是打开函数。下面是示例代码:

代码语言:javascript
复制
import numpy as np

try:
    import cPickle as pickle
except ImportError:
    import pickle


with open('data_train.pickle', 'rb') as f:
    # If you use Python 3 needs a parameter as encoding='bytes'
    # Otherwise, you shouldn't add encoding parameters in Python 2
    data_train = pickle.load(f, encoding='bytes')


print("Finished loading data!")
print(data_train.keys())

特别感谢@ahmet-sezgin-duran

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48862141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档