使用scipy.stats和多处理创建的随机变量:Pickle错误

时间:2017-11-09 13:23:54

标签: python-2.7 scipy multiprocessing

我在python中不是王者,最近我在代码中做了一些修改而遇到了麻烦。我的算法基本上是随机梯度算法的多种用途,因此需要随机变量。

我希望我的代码能够处理自定义随机变量和概率分布。为此,我修改了我的代码,现在我使用scipy.stats来绘制自定义随机变量的样本。基本上,我创建了一个带有强加概率密度或累积密度的随机变量,然后通过累积分布函数的反函数和[0,1]之间的一些均匀随机变量绘制样本。

为了简单起见,算法使用随机梯度算法从不同的起点运行多个优化,因此可以并行化,因为起点是独立的。

问题是以这种方式创建的随机变量不能被腌制

  

PicklingError:无法发现:属性查找内置 .instancemethod失败

我现在没有得到酸洗问题的副作用,所以如果你们可以帮助我解决这个问题的简单说明:

RV = scipy.stats.norm();
def Draw(rv,N):
   return rv.ppf(np.random.random(N))
pDraw = partial(Draw,RV);
PM = multiprocessing.pool(Processes = 2);
L = PM.map(pDraw,range(1,5));

我听说过不使用相同序列化算法(dill)的病毒库,但我想避免这个解决方案(如果它是一个解决方案),因为它不包含在我的python发行版中。安装它会花费很多时间。

0 个答案:

没有答案