Ошибка: преобразование в TensorType из переменной функции в коде Python
Я пробовал пример набора данных Kaggle Blackhole, который был объяснен в книге Кэмерона Дэвидсона-Пилона "Байесовские методы для хакеров" в главе 5. Однако у меня были трудности с использованием pymc3
пакет и его функции. Приоры были определены как равномерное распределение, и это работает нормально. Такова функция meean
это определено после. Но я столкнулся с ошибкой при попытке нормального распределения, в котором говорится, что функция не может быть преобразована в TensorType. Куда я иду не так? Пожалуйста, найдите мой код ниже:
def euc_dist(x,y):
return np.sqrt(((x-y)**2).sum(axis=1))
def f_dist(gxy_pos,halo_pos,c):
return np.maximum(euc_dist(gxy_pos,halo_pos),c)[:,None]
def tan_dist(glxy_pos,halo_pos):
delta=glxy_pos-halo_pos
t=(2*np.arctan(delta[:,1]/delta[:,0]))[:,None]
return np.concatenate([-np.cos(t),-np.sin(t)],axis=1)
import pymc3 as pm
with pm.Model() as model:
mass_large = pm.Uniform('mass_large',40,180)
halo = pm.Uniform('halo',0,4200)
def meean(mass=mass_large,h_pos=halo,glx_pos=data[:,:2]):
return mass/f_dist(glx_pos,h_pos,240)*tan_dist(glx_pos,h_pos)
mn=pm.Deterministic('mean',meean)
ellpty=pm.Normal('ellipticity',meean,1./0.05,observed=data[:,2:])
Ошибка:
~\Anaconda3\lib\site-packages\theano\tensor\basic.py in as_tensor_variable(x, name, ndim)
198 except Exception:
199 str_x = repr(x)
--> 200 raise AsTensorError("Cannot convert %s to TensorType" % str_x, type(x))
201
202 # this has a different name, because _as_tensor_variable is the
AsTensorError: ('Cannot convert <function meean at 0x000002CD7113BD90> to TensorType', <class 'function'>)