Hi
I have a question when I using the with pm.model(). I defined a function, and I want to use the return value of ff function on the pm.model(). But it shows an error ‘we expected 3 inputs but got 5’
@theano.compile.ops.as_op(itypes=[tt.lscalar, itypes=[tt.lscalar], itypes=[tt.lscalar], otypes=[tt.dvector])
def ff(vx,vy,sx,sy,ro):
x = 0.1
y= 0.1
return 1/2/np.pi/sx/sy/tt.sqrt(1-ro**2)*tt.exp(-1/2/(1-ro)**2*((x-vx)**2/sx**2+(y-vy)**2/sy**2-2*ro*(x-vx)*(y-vy)/sx/sy))
with pm.Model() as converge_model:
vx_min = -5
vx_max = 5
vy_min = -5
vy_max = 5
Dx_min = 0.01
Dx_max = 0.89
Dy_min = 0.01
Dy_max = 0.89
ro_min = -0.999
ro_max = 0.999
vx = pm.Uniform('vx', lower=vx_min, upper=vx_max)
Dx = pm.Uniform('Dx', lower=Dx_min, upper=Dx_max)
vy = pm.Uniform('vy', lower=vx_min, upper=vx_max)
Dy = pm.Uniform('Dy', lower=Dy_min, upper=Dy_max)
ro = pm.Uniform('ro', lower=ro_min, upper=ro_max)
mu=tt.stack(vx,vy)
cov = tt.stack([[Dx**Dx,ro*Dx*Dy],[ro*Dx*Dy,Dy**2]])
x = pm.MvNormal('x',mu=mu,cov=cov,shape=(2,2),observed=xobser)
ff = pm.Deterministic('ff',ff(vx,vy,Dx,Dy,ro))#,1/2/np.pi/Dx/Dy/tt.sqrt(1-ro**2)*tt.exp(-1/2/(1-ro)**2*((x[0]-vx)**2/Dx**2+(x[1]-vy)**2/Dy**2-2*ro*(x[0]-vx)*(x[1]-vy)/Dx/Dy)))
C = pm.Exponential('C',lam=1/ff,observed=Cobser)
How can I cooperated the function of ff into the C and ff?
Thanks for your help!!