深さ学習pythonデータ構造(一)-シーケンス読み出しpickleとcPickle
3711 ワード
pickleとcPickle;両者の関係:「cPickle–A faster pickle」
import cPickle as pickle
常用関数:pickle.dump(data,handle,0 or 1 or 2)
1つのファイルハンドルと1つのデータオブジェクトをパラメータとして受け入れる[シーケンス化]0:txt,1,2:古い新しいバイナリ
pickle.load(handle)[逆シーケンス化]
【まずf=open(,“wb”)ファイルハンドルを開き、データを自分の望むフォーマットで整理して読み込む】
一、dump:pythonオブジェクトをローカルのファイルにシーケンス化して保存します.【永久保存】例えば、ネット上から這い降りたデータを、ローカルに保存する
dump関数には2つのパラメータを指定する必要があります.1つ目はシーケンス化が必要なpythonオブジェクト名、2つ目はローカルのファイルです.ここでopen関数を使用してファイルを開き、「書く」操作を指定する必要があります.
二、load:ローカルファイルをロードし、pythonオブジェクトを復元する
dumpと同様にopen関数を使用してローカルのファイルを開き、「読み取り」操作を指定する必要があります.
三、dumps:pythonオブジェクトのシーケンス化を文字列変数に保存する【一時保存】
四、loads:文字列変数からpythonオブジェクトを読み込む
例:
例:ニューラルネットワークにおけるモデルパラメータの保存
テキストファイルをバイナリファイルに変換
import cPickle as pickle
常用関数:pickle.dump(data,handle,0 or 1 or 2)
1つのファイルハンドルと1つのデータオブジェクトをパラメータとして受け入れる[シーケンス化]0:txt,1,2:古い新しいバイナリ
pickle.load(handle)[逆シーケンス化]
【まずf=open(,“wb”)ファイルハンドルを開き、データを自分の望むフォーマットで整理して読み込む】
def get_all_pics(self,
imagepath="/home/lmzwhu/programs/DATAS/HWDB/train/",
dict_file="/home/lmzwhu/programs/DATAS/HWDB/train_im_addr_dict"):
'''
( )ID
{0:[filepath1, filepath2, ...], 1:[...], ...}
'''
# , ,
if os.path.exists(dict_file):
with open(dict_file, "rb") as f:
return pickle.load(f)
# ,
codes = os.listdir(imagepath)
im_addr = {}
for code in codes:
path = os.path.join(imagepath, code)
if not os.path.isdir(path):
continue
addresses = glob(os.path.join(path, "*.png"))
im_addr[int(code)] = addresses
#
with open(dict_file, "wb") as f:
pickle.dump(im_addr, f)
return im_addr
一、dump:pythonオブジェクトをローカルのファイルにシーケンス化して保存します.【永久保存】例えば、ネット上から這い降りたデータを、ローカルに保存する
>>> import cPickle
>>> data = range(1000)
>>> cPickle.dump(data,open("test\\data.pkl","wb"))
dump関数には2つのパラメータを指定する必要があります.1つ目はシーケンス化が必要なpythonオブジェクト名、2つ目はローカルのファイルです.ここでopen関数を使用してファイルを開き、「書く」操作を指定する必要があります.
二、load:ローカルファイルをロードし、pythonオブジェクトを復元する
>>> data = cPickle.load(open("test\\data.pkl","rb"))
dumpと同様にopen関数を使用してローカルのファイルを開き、「読み取り」操作を指定する必要があります.
三、dumps:pythonオブジェクトのシーケンス化を文字列変数に保存する【一時保存】
>>> data_string = cPickle.dumps(data)
四、loads:文字列変数からpythonオブジェクトを読み込む
>>> data = cPickle.loads(data_string)
例:
# -*- coding: utf-8 -*-
import pickle
# :
# import cPickle as pickle
obj = {"a": 1, "b": 2, "c": 3}
# obj tmp.txt
pickle.dump(obj, open("tmp.txt", "w"))
# do something else ...
# tmp.txt obj
obj2 = pickle.load(open("tmp.txt", "r"))
print obj2
例:ニューラルネットワークにおけるモデルパラメータの保存
if best_accuracy
import pickle
b=7
i=13000000
fa=99.056
s=' 123abc'
f=open('sample_pickle.dat','wb') #
try:
pickle.dump(b,f) #
pickle.dump(i,f) #
pickle.dump(fa,f) #
except:
print(' ')
finally:
f.close()
'''
pickle 'sample_pickle.dat'
'''
f=open('sample_pickle.dat','rb')
n=pickle.load(f) #
for i in range(n):
x=pickle.load(f)
print(x)
f.close()
'''
13000000
99.056
123abc
'''
テキストファイルをバイナリファイルに変換
'''
'''
with open('test.txt')as src,open('test_pickle.dat','wb')as dest:
lines=src.readline()
pickle.dump(len(lines),dest)
for line in lines:
pickle.dump(line,dest)
with open('test_pickle.dat','rb')as fp:
n=pickle.load(fp)
for i in range(n):
print(pickle.load(fp))