未经允许,不得转载,谢谢~~
一 什么是pickle
- pickle实现了用于python对象结构的序列化和去序列化的协议;
- 会把python转成二进制的格式存储;
简单来说,就是将我们想要保存的python对象用二进制编码存储下来。这样对于存储数据量很大的信息是非常有益的。
对于我们来说,了解一下怎么样就可以。
二 pickle的用法
这里只记录和整理一些比较常见的用法,具体的可以戳底部的参考资料学习官网给出的文档。
1 模块导入
import pickle
import numpy as np
2 存储与加载
- save:
pickle.dump(a, open("fiile.pkl", "wb"))
- load:
pickle.load(open("file.pkl", "rb"))
3 用法示例
import pickle
import numpy as np
# Your data
a = np.array([[1, 2, 3], [4, 5, 6]])
# Save it to dick
pickle.dump(a, open("foo.pkl", "wb"))
# And load back
b = pickle.load(open("foo.pkl", "rb"))
# Check if a == b
print(a)
print(b)
print(a == b)
# And pickle can save anything you want
# for example, a dict
pickle.dump({"key": "value"}, open("dict.pkl", "wb"))
# more things
feature = np.ones(2, 3)
label = np.ones(2)
data = {
"feature": feature,
"data": label
}
pickle.dump(data, open("more.pkl", "wb"))
data_load_back = pickle.load(open("more.pkl", "rb"))
print(data)
print(data_load_back)
4 一些发现
熟悉pytorch的小伙伴不知道有没有发现pytorch保存的model都是以.pkl
结尾的,其实就是用pickle
模块在存储的。
如下图即为torch.save
中的函数命名,有兴趣的可以自己看一看源码嘻嘻ヾ(◍°∇°◍)ノ゙