未經(jīng)允許,不得轉(zhuǎn)載搓萧,謝謝~~
一 什么是pickle
- pickle實(shí)現(xiàn)了用于python對(duì)象結(jié)構(gòu)的序列化和去序列化的協(xié)議杂数;
- 會(huì)把python轉(zhuǎn)成二進(jìn)制的格式存儲(chǔ);
簡(jiǎn)單來(lái)說(shuō)瘸洛,就是將我們想要保存的python對(duì)象用二進(jìn)制編碼存儲(chǔ)下來(lái)揍移。這樣對(duì)于存儲(chǔ)數(shù)據(jù)量很大的信息是非常有益的。
對(duì)于我們來(lái)說(shuō)反肋,了解一下怎么樣就可以那伐。
二 pickle的用法
這里只記錄和整理一些比較常見(jiàn)的用法,具體的可以戳底部的參考資料學(xué)習(xí)官網(wǎng)給出的文檔石蔗。
1 模塊導(dǎo)入
import pickle
import numpy as np
2 存儲(chǔ)與加載
- 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 一些發(fā)現(xiàn)
熟悉pytorch的小伙伴不知道有沒(méi)有發(fā)現(xiàn)pytorch保存的model都是以.pkl
結(jié)尾的罕邀,其實(shí)就是用pickle
模塊在存儲(chǔ)的。
如下圖即為torch.save
中的函數(shù)命名养距,有興趣的可以自己看一看源碼嘻嘻ヾ(?°?°?)??