0
我试图写一个通用的函数,它接受一个用户定义的函数,先验(除其他事项外)的列表的参数列表和做一些事情(无关这个问题)获取pymc对象
为例如,(...下面的代码片段是指不相关的信息)
generic_func(..., pred, [pymc.Uniform("a", 0, 5), pymc.Unform("b", 0, 1)], ...)
其中user_fn被定义为
def pred(...,a, b, ...) : ...
我需要定义generic_func,我做如下S:
def generic_func(..., user_fn, fittable_prior_list, optional_arguments_for_user_fn):
h = {}
for params in fittable_prior_list:
h[params.name] = params
user_fn(..., **h, ...)
我不想限制用户传递参数的顺序相同user_fn预计,这就是为什么我使用的字典。我假定列表中的前辈将具有与user_fn的参数相同的名称(我会很乐意知道这个假设是否可以取消,但即使这种假设成立,我也没问题)
但是我得到以下错误:
AttributeError: 'Uniform' object has no attribute 'name'
我去这些链接How can I read a function's signature including default argument values?,也Getting method parameter names in python
然后我试图
tau = pm.Uniform(name = "tau", lower=0, upper=5)
argspec = inspect.getargspec(tau).args
我碰到下面的错误
TypeError: <pymc.distributions.Uniform 'tau' at 0x9a3210c> is not a Python function
有没有一种方法,我可以访问这些pymc对象的名字吗?
虽然这不是主要问题,但我也很乐意知道是否有更好的方法来解决这个问题,而不是我正在使用的问题。
您的答案正在拾取的低质量过滤器。您可以添加在为什么这个代码块解决了有机磷农药的问题的一些信息? –
你的答案是由低品质滤镜回升。可以扩大你的答案? –