openMDAOを使用して、エクスポートして別のPythonコードでインポートする共同クリギングメタモデルを構築しています。将来の使用のためにメタモデルを保存する
私は古いフォーラム(http://openmdao.org/forum/questions/444/how-can-i-save-the-metamodel-for-later-use?sort=votes)に、誰かがメタモデルを保存するためにピクルスを使用したというメッセージを発見しました。 私はレコーダーについても読んだことがありますが、私が行ったさまざまなテストでは成功しませんでした。
メタモデルを保存して今後のコードで使用する方法はありますか?
EDIT:私は 'ピクルス' を用いて溶液のようなものを見つけたと思います。私はクリギング・メタ・モデルを使ってこれを行うことに成功しましたが、私は共同クリギングで同じことをすると思います。
openMDAOの「古い」フォーラムのポストのように、私は訓練されたメタモデルをファイルに保存し、別のpythonスクリプトで再利用しました。私はここで訓練されたメタモデルを保存するコードの一部に参加しました:
cok = MultiFiCoKrigingSurrogate()
prob = Problem(Simulation(cok, nfi=2))
prob.setup(check=False)
prob['mm.train:x1'] = DATA_HF_dim
prob['mm.train:x1_fi2'] = DATA_LF_dim
prob['mm.train:y1'] = rastri_e
prob['mm.train:y1_fi2'] = rastri_c
prob.run()
import pickle
f = open('meta_model_info.p','wb')
pickle.dump(prob,f)
f.close
訓練されたメタモデルは、ファイルmeta_model_info.pに保存されると、私は学習フェーズをスキップし、別のスクリプトでそれを読み込むことができます。 2番目のスクリプトのコードの一部はここにある:
class Simulation(Group):
def __init__(self, surrogate, nfi):
super(Simulation, self).__init__()
self.surrogate = surrogate
mm = self.add("mm", MultiFiMetaModel(nfi=nfi))
mm.add_param('x1', val=0.)
mm.add_output('y1', val=(0.,0.), surrogate=surrogate)
cok = MultiFiCoKrigingSurrogate()
prob = Problem(Simulation(cok, nfi=2))
prob.setup(check=False)
import pickle
f = open('meta_model_info.p','rb')
clf = pickle.load(f)
pred_cok_clf = []
for x in inputs:
clf['mm.x1'] = x
clf.run()
pred_cok_clf.append(clf['mm.y1'])
pred_mu_clf = np.array([float(p[0]) for p in pred_cok_clf])
pred_sigma_clf = np.array([float(p[1]) for p in pred_cok_clf])
私はこの2番目のスクリプトのいずれかで問題が問題のとセットアップにクラスを再定義することを余儀なくされたが。
それは「漬物」の適切な使用であるか、これを行うための別の方法がある場合、あなたはどんな提案:)