2013-06-10 75 views
1

我一直在運行一些相當昂貴的模型,並且長時間的老化。我想保存&恢復AdaptiveMetropolis步驟方法(至少)的狀態以減少老化時間。有沒有推薦的方法來做到這一點,或者我應該醃step_method.current_state()字典,並嘗試更新step_method.C,step_method.proposal_sd,或許我希望重新啓動時從其他人​​醃製數據?如何保存/恢復AdaptiveMetropolis步驟方法狀態?

(交叉後從谷歌棄用組論壇:https://groups.google.com/forum/#!topic/pymc/6U72WuuXmMo

+0

目前這似乎是一個計算問題('我怎麼得到這個軟件做這件事情?'),而不是一個統計問題。你能更清楚地確定一個具體的統計問題,或者考慮將其標記爲移到StackOverflow? –

+0

你能告訴我們一些代碼嗎?也請標記你的問題。這看起來像蟒蛇(基於pickle的參考) – booyaa

+0

@booyaa - 對不起,這是一個pymc問題,旨在爲他們的論壇,它告訴我張貼交叉驗證,然後在這裏重定向我....我'我們將處理一個代碼示例... – keflavich

回答

1

您是否嘗試過使用save_staterestore_sampler_state方法呢?他們應該使用任何非sqlite後端(例如pickle,txt)。前者應將採樣器信息保存到數據庫中;這裏是一個例子:

{'stochastics': {'alpha': array([-0.20073951]), 'beta': array([ 2.77634734])}, 'step_methods': {'AdaptiveMetropolis_beta_alpha': {'C': array([[ 41.28628017, 2.79567393], 
     [ 2.79567393, 1.8832875 ]]), '_trace': [array([ 10.4010084 , 1.48321645]), ... [ 0.43509455, 1.30152996]]), 
     'accepted': 69.0, 'shrink_if_necessary': False}}, 
     'sampler': {'status': 'ready', '_iter': 2000, '_tune_interval': 1000, '_tuned_count': 0, '_tune_throughout': True, '_burn_till_tuned': False, '_current_iter': 2000, '_burn': 0, '_thin': 1}} 
+0

如果採樣是在RAM後端運行,該怎麼辦?有什麼方法可以挽救這個狀態嗎? – keflavich

+0

該狀態將作爲字典存儲在ram後端的'_state_'屬性中。 –

+0

沒有'_state_'屬性,'_state'只是一個列表。 '.current_state()'讀取'_state'引用的屬性,那是什麼意思? – keflavich

相關問題