Python学習(四)cPickleの使い方
3023 ワード
pythonには、pickleとcPickleの2つの類似点があります.両者の関係:「cPickle–A faster pickle」pickleモジュールの2つの主要な関数はdump()とload()です.dump()関数は、ファイルハンドルとデータオブジェクトをパラメータとして受け入れ、データオブジェクトを特定のフォーマットで所定のファイルに保存します.load()関数を使用してファイルから保存したオブジェクトを取り出すと、pickleはこれらのオブジェクトを元のフォーマットに復元する方法を知っています.cPickleでは、list、dict、さらにはクラスのオブジェクトなど、任意のタイプのpythonオブジェクトをシーケンス化できます.シーケンス化とは、完全に保存され、完全に可逆的に回復できるようにすることです.cPickleでは、主に4つの関数がこの作業を行うことができます.次に例を使用して説明します.一、dump:pythonオブジェクトをローカルのファイルにシーケンス化して保存します.
dump関数には2つのパラメータを指定する必要があります.1つ目はシーケンス化が必要なpythonオブジェクト名、2つ目はローカルのファイルです.ここでopen関数を使用してファイルを開き、「書く」操作を指定する必要があります.
二、load:ローカルファイルをロードし、pythonオブジェクトを復元する
dumpと同様にopen関数を使用してローカルのファイルを開き、「読み取り」操作を指定する必要があります.
三、dumps:pythonオブジェクトのシーケンス化を文字列変数に保存する
四、loads:文字列変数から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<val_accuracy:
best_accuracy = val_accuracy
cPickle.dump(model,open("./model.pkl","wb"))