我正尝试通过包装Agner Fogs c ++版本(https://www.agner.org/random/)来向PyMC3(Wallenius非中央超几何)添加新的离散分布。
我已经成功地将相关功能放入c ++扩展中,并添加了广播功能,使其表现为scipy的分布。 (目前,广播是使用Python完成的。..稍后将尝试使用xtensor-python绑定来在c ++中实现更高性能的矢量化。)
我遇到了以下问题:当我在模型上下文中实例化新发行版的RV时,出现“ TypeError:需要整数(类型为FreeRV)”的地方,其中“ value”是传递给新发行版的logp()函数。
我了解PyMC3可能需要将RV连接到功能,但是我找不到将它们转换为新功能可以使用的功能的方法。
任何有关如何解决此问题或有关将新发行版添加到PyMC3或发行版内部工作的提示都将非常有帮助。
提前谢谢! 扬
编辑:我注意到FreeRV从theanos TensorVariable继承,所以我尝试调用.eval()。这导致沿线另一个错误,即没有输入被连接。 (我现在没有确切的错误消息)。 令我困惑的一件事是,为什么在建立模型时在实例化变量时调用logp ...