2
有沒有人使用,並行SAmpler GEnerator?通過:使用示例
這可能對我很有用,但我發現的唯一文檔是Github上的三行README(https://github.com/cscherrer/passage)和Hackage上的簡潔API。
一個簡單的如何運行它的例子會很棒!
有沒有人使用,並行SAmpler GEnerator?通過:使用示例
這可能對我很有用,但我發現的唯一文檔是Github上的三行README(https://github.com/cscherrer/passage)和Hackage上的簡潔API。
一個簡單的如何運行它的例子會很棒!
在高層次上,通道有兩個重要的單子記住:BayesianNetwork
和BayesianSimulator
。
首先,建立在BayesianNetwork單子模型:
myModel :: Int -> BayesianNetwork (Node, Node, [Node])
myModel n = do
mu <- normal 0 0.001
tau <- improperScale
xs <- replicateM n $ normal mu tau
return (mu, tau, xs)
這被指定爲生成模型,因此任何不是隨機的(這裏的數據點n
的數量)必須作爲一個傳遞參數。或者,我們可以在n
上發佈一個發行版。
接下來,我們建立一個調用模型模擬器:
mySim :: [Double] -> BayesianSimulator()
mySim xs0 = do
setThreadNum 4
let n = length xs0
(mu, tau, xs) <- model $ myModel n
forM (zip xs xs0) $ \(x, x0) -> observe x x0
monitor mu
monitor tau
最後,需要一些數據:
xs0 = [1, -1, 2, 2, 2, -2]
和運行simluator:
main = genSimulator "myExample" (mySim xs0)
這將創建一個採樣器使用OpenMP代碼的新目錄myExample
。