使用PyMC的Adaptive Metropolis的示例/教程

时间:2014-12-02 23:52:04

标签: image-processing python-3.x bayesian pymc

我正在寻找用于图像处理的AdaptiveMetropolis步骤方法的示例或教程。

到目前为止,我发现的与图像相关的唯一资源是这个天文学dissertation和相关的GitHub repo

这个更宽的question似乎没有提供PyMC示例代码。

如何在此模拟阵列上找到峰值?

import numpy as np
from matplotlib import pyplot as plt

sz = (12,18)
data_input = np.random.normal( loc=5.0, size=sz )
data_input[7:10, 2:6] = np.random.normal( loc=100.0, size=(3,4) )

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
im = ax.imshow( data_input )
ax.set_title("input")

enter image description here

1 个答案:

答案 0 :(得分:1)

我最接近的是:http://nbviewer.ipython.org/github/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/blob/master/Chapter5_LossFunctions/LossFunctions.ipynb(见 示例:关于观察黑暗世界的Kaggle比赛)

在这个帖子中,您询问了一个特定的问题:https://github.com/pymc-devs/pymc/issues/653关于在图像中查找数组。这是对模型的第一次尝试:

在这种情况下,您似乎正在尝试用高斯噪声估计二维均匀分布。您必须将其转换为实际模型,但这只是一个想法:

  

lower_x~DiscreteUniform(0,20)

     

upper_x~DiscreteUniform(0,20)

     

lower_y~DiscreteUniform(0,20)

     

upper_y~DiscreteUniform(0,20)

     

身高〜正常(100,1)

     

noise~InvGamma(1,1)

     

表示=零((20,20))

     

表示[[lower_x:upper_x,lower_y:upper_y]] = height#这需要是   确定性的

     

数据〜正常(mu =均值,sd =噪声)

将upper_x编码为偏移量然后执行lower_x:lower_x + offset_x可能会更好,否则您需要强制执行lower_x< upper_x。