Numba jitclass具有功能输入

时间:2016-04-30 13:28:10

标签: python numba

我正在努力开发Numba的自适应拒绝采样器。我想使用一个类来实现它,因为我认为它会使代码更清晰,我看到Numba支持类。如果它可以将函数作为输入,那么我的类将更加通用/有用,即我想要从中采样的分布的log pdf。有没有办法做到这一点?我想的另一种方法是在类定义本身中定义log pdf方程。

为什么我要这样做?采样器将用作Gibbs采样方案的一部分,因此每个采样步骤的加速是至关重要的。我必须从我知道的分布模拟到归一化常数,自适应拒绝采样是一种通用技术,可以帮助我进行采样而无需知道这个归一化常数。有一个自适应拒绝采样器的python实现浮动堆栈溢出,但它对我的目的来说太慢了。它也会因某些原因而在某些模拟数据上随机中断。我在项目的其他部分运气非常好,包括在Gibbs采样器的一部分上加速超过100倍。

1 个答案:

答案 0 :(得分:2)

Numba函数不能将函数作为输入参数。官方文档建议在某些情况下可能在函数工厂中使用闭包作为解决方法:

http://numba.pydata.org/numba-doc/latest/user/faq.html#can-i-pass-a-function-as-an-argument-to-a-jitted-function

如果网址无效,请复制上述链接中的代码示例:

{{1}}

不确定这是否适用于您的特定情况。我认为定义你想要的函数作为类方法将是一个更好的策略,虽然没有代码示例,我只是猜测。

相关问题