Python 为什么酸洗未拼接的cifar10数据集会产生不同的大小?
我立即解开并将其作为文件进行pickle。为什么我会得到一个不同大小的文件 代码如下: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
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号议定书带来的改进