Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么酸洗未拼接的cifar10数据集会产生不同的大小?_Python_Pickle - Fatal编程技术网

Python 为什么酸洗未拼接的cifar10数据集会产生不同的大小?

Python 为什么酸洗未拼接的cifar10数据集会产生不同的大小?,python,pickle,Python,Pickle,我立即解开并将其作为文件进行pickle。为什么我会得到一个不同大小的文件 代码如下: import cPickle as pk def unpickle_data(filename, mode='rb'): with open(filename, mode) as pkfile: data = pk.load(pkfile) return data def pickle_data(data, filename, mode='wb'): with

我立即解开并将其作为文件进行pickle。为什么我会得到一个不同大小的文件

代码如下:

import cPickle as pk


def unpickle_data(filename, mode='rb'):
    with open(filename, mode) as pkfile:
        data = pk.load(pkfile)
    return data


def pickle_data(data, filename, mode='wb'):
    with open(filename, mode) as pkfile:
         pk.dump(data, pkfile)


def main():
     dict = unpickle_data('data_batch_1')
     keys = dict.viewkeys()
     print keys
     print len(dict['data'])
     pickle_data(dict, 'mydata')


if __name__ == '__main__':
     main()
我得到的文件几乎是原始文件的两倍大。

我已取消勾选新文件,并将数据与原始文件进行了比较。数据值和数据类型都是相同的。那么原因是什么呢


另外,我发现unpickle和pickle操作仅在
cifar10
dataset上生成不同的大小。

pickle支持多种协议。发件人:

目前有5种不同的协议可用于 酸洗。使用的协议越高,版本越新 Python需要读取生成的pickle

  • 协议版本0是原始的“人类可读”协议,与早期版本的Python向后兼容
  • 协议版本1是一种旧的二进制格式,它也与Python的早期版本兼容
  • Python2.3中引入了协议版本2。它提供了对新样式类更有效的酸洗。有关详细信息,请参阅PEP 307 关于第2号议定书带来的改进的信息
  • Python 3.0中添加了协议版本3。它明确支持字节对象,并且不能被Python2.x取消勾选。这 是默认协议,并且在 需要与其他Python 3版本兼容
  • Python 3.4中添加了协议版本4。它增加了对超大对象的支持,可以处理更多种类的对象和一些数据 格式优化。请参阅PEP 3154,了解相关信息 第4号议定书带来的改进
我怀疑你的原始文件被其他东西弄脏了 版本0,但在保存时使用了默认版本