函数pickle.load(f, encoding='bytes')

来源:2-5 数据处理与模型图构建(1)

慕婉清4532196

2019-06-27

在2-5数据处理与模型图构建(1)中,出现了函数:
def load_data(filename):
""“read data from data file.”""
with open(filename, ‘rb’) as f:
data = pickle.load(f, encoding=‘bytes’)
return data[b’data’], data[b’labels’]

  1. 查询相关资料,pickle.load的作用是反序列化,也就是把二进制文件进行解码,不知道这样理解对不对?
  2. 既然是解码为什么函数的参数是encoding=“bytes”,难道不应该是"utf-8"或者“ASCII”?
  3. 我在电脑中测试上面的参数都失败了,如果上面的能够成功解码,那么return 后面是否应该是data[“data”].
写回答

2回答

慕仔2575155

2020-11-22

我也遇到这个问题了,后面加了encoding = 'bytes',同时还发现,data[b’labels’]的type不是str了,反而变成了bytes

不过最终也不影响输出和读入数据

0
0

正十七

2019-06-27

同学你好,你检查下你用的python版本,你贴的代码是python3的,如果用的是python2的环境,那么会失败。

pickle.load是反序列化。参数是bytes是由如何存储数据决定的,在我们使用的例子里,是bytes。你可以试试python2的用法

def load_data(filename):
    """read data from data file."""
    with open(filename, 'rb') as f:
        data = cPickle.load(f)
    return data['data'], data['labels']


0
3
慕数据4013138
回复
正十七
可以正常读
2019-11-18
共3条回复

深度学习之神经网络(CNN/RNN/GAN)算法原理+实战

深度学习算法工程师必学,深入理解深度学习核心算法CNN RNN GAN

2617 学习 · 935 问题

查看课程