Skip to content

Commit 81da7e8

Browse files
author
Junpeng Lao
committed
accidental bug fix
cast constants to tensors
1 parent edb53df commit 81da7e8

File tree

5 files changed

+33
-35
lines changed

5 files changed

+33
-35
lines changed

pymc3/distributions/continuous.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ def __init__(self, mu=None, lam=None, phi=None, alpha=0., *args, **kwargs):
376376
self.alpha = alpha = tt.as_tensor_variable(alpha)
377377
self.mu = mu = tt.as_tensor_variable(mu)
378378
self.lam = lam = tt.as_tensor_variable(lam)
379-
self.phi = phi =tt.as_tensor_variable(phi)
379+
self.phi = phi = tt.as_tensor_variable(phi)
380380

381381
self.mean = self.mu + self.alpha
382382
self.mode = self.mu * (tt.sqrt(1. + (1.5 * self.mu / self.lam)**2)
@@ -1501,11 +1501,9 @@ def __init__(self, lower=0, upper=1, c=0.5,
15011501
*args, **kwargs):
15021502
super(Triangular, self).__init__(*args, **kwargs)
15031503

1504-
self.c = c
1505-
self.lower = lower
1506-
self.upper = upper
1507-
self.mean = c
1508-
self.median = self.mean
1504+
self.median = self.mean = self.c = c = tt.as_tensor_variable(c)
1505+
self.lower = lower = tt.as_tensor_variable(lower)
1506+
self.upper = upper = tt.as_tensor_variable(upper)
15091507

15101508
def random(self, point=None, size=None):
15111509
c, lower, upper = draw_values([self.c, self.lower, self.upper],

pymc3/distributions/discrete.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,8 @@ class DiscreteWeibull(Discrete):
206206
def __init__(self, q, beta, *args, **kwargs):
207207
super(DiscreteWeibull, self).__init__(*args, defaults=['median'], **kwargs)
208208

209-
self.q = q
210-
self.beta = beta
209+
self.q = q = tt.as_tensor_variable(q)
210+
self.beta = beta = tt.as_tensor_variable(beta)
211211

212212
self.median = self._ppf(0.5)
213213

pymc3/distributions/mixture.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Mixture(Distribution):
4242
def __init__(self, w, comp_dists, *args, **kwargs):
4343
shape = kwargs.pop('shape', ())
4444

45-
self.w = w
45+
self.w = w = tt.as_tensor_variable(w)
4646
self.comp_dists = comp_dists
4747

4848
defaults = kwargs.pop('defaults', [])

pymc3/distributions/multivariate.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -594,9 +594,9 @@ def __init__(self, nu, V, *args, **kwargs):
594594
'on the issues surrounding the Wishart see here: '
595595
'https://github.com/pymc-devs/pymc3/issues/538.',
596596
UserWarning)
597-
self.nu = nu
598-
self.p = p = V.shape[0]
599-
self.V = V
597+
self.nu = nu = tt.as_tensor_variable(nu)
598+
self.p = p = tt.as_tensor_variable(V.shape[0])
599+
self.V = V = tt.as_tensor_variable(V)
600600
self.mean = nu * V
601601
self.mode = tt.switch(1 * (nu >= p + 1),
602602
(nu - p - 1) * V,
@@ -840,8 +840,8 @@ class LKJCholeskyCov(Continuous):
840840
http://math.stackexchange.com/q/130026
841841
"""
842842
def __init__(self, eta, n, sd_dist, *args, **kwargs):
843-
self.n = n
844-
self.eta = eta
843+
self.n = n = tt.as_tensor_variable(n)
844+
self.eta = eta = tt.as_tensor_variable(eta)
845845

846846
if 'transform' in kwargs:
847847
raise ValueError('Invalid parameter: transform.')
@@ -943,13 +943,13 @@ def __init__(self, eta=None, n=None, p=None, transform='interval', *args, **kwar
943943
'dimension parameter p -> n. Please update your code. '
944944
'Automatically re-assigning parameters for backwards compatibility.',
945945
DeprecationWarning)
946-
self.n = p
947-
self.eta = n
946+
self.n = p = tt.as_tensor_variable(p)
947+
self.eta = n = tt.as_tensor_variable(n)
948948
eta = self.eta
949949
n = self.n
950950
elif (n is not None) and (eta is not None) and (p is None):
951-
self.n = n
952-
self.eta = eta
951+
self.n = n = tt.as_tensor_variable(n)
952+
self.eta = eta = tt.as_tensor_variable(eta)
953953
else:
954954
raise ValueError('Invalid parameter: please use eta as the shape parameter and '
955955
'n as the dimension parameter.')

pymc3/distributions/timeseries.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ class AR1(distribution.Continuous):
3030

3131
def __init__(self, k, tau_e, *args, **kwargs):
3232
super(AR1, self).__init__(*args, **kwargs)
33-
self.k = k
34-
self.tau_e = tau_e
33+
self.k = k = tt.as_tensor_variable(k)
34+
self.tau_e = tau_e = tt.as_tensor_variable(tau_e)
3535
self.tau = tau_e * (1 - k ** 2)
36-
self.mode = 0.
36+
self.mode = tt.as_tensor_variable(0.)
3737

3838
def logp(self, x):
3939
k = self.k
@@ -75,11 +75,11 @@ class GaussianRandomWalk(distribution.Continuous):
7575
def __init__(self, tau=None, init=continuous.Flat.dist(), sd=None, mu=0.,
7676
*args, **kwargs):
7777
super(GaussianRandomWalk, self).__init__(*args, **kwargs)
78-
self.tau = tau
79-
self.sd = sd
80-
self.mu = mu
78+
self.tau = tau = tt.as_tensor_variable(tau)
79+
self.sd = sd = tt.as_tensor_variable(sd)
80+
self.mu = mu = tt.as_tensor_variable(mu)
8181
self.init = init
82-
self.mean = 0.
82+
self.mean = tt.as_tensor_variable(0.)
8383

8484
def logp(self, x):
8585
tau = self.tau
@@ -129,11 +129,11 @@ def __init__(self, omega=None, alpha_1=None, beta_1=None,
129129
initial_vol=None, *args, **kwargs):
130130
super(GARCH11, self).__init__(*args, **kwargs)
131131

132-
self.omega = omega
133-
self.alpha_1 = alpha_1
134-
self.beta_1 = beta_1
132+
self.omega = omega = tt.as_tensor_variable(omega)
133+
self.alpha_1 = alpha_1 = tt.as_tensor_variable(alpha_1)
134+
self.beta_1 = beta_1 = tt.as_tensor_variable(beta_1)
135135
self.initial_vol = initial_vol
136-
self.mean = 0
136+
self.mean = tt.as_tensor_variable(0.)
137137

138138
def get_volatility(self, x):
139139
x = x[:-1]
@@ -179,7 +179,7 @@ class EulerMaruyama(distribution.Continuous):
179179
"""
180180
def __init__(self, dt, sde_fn, sde_pars, *args, **kwds):
181181
super(EulerMaruyama, self).__init__(*args, **kwds)
182-
self.dt = dt
182+
self.dt = dt = tt.as_tensor_variable(dt)
183183
self.sde_fn = sde_fn
184184
self.sde_pars = sde_pars
185185

@@ -221,9 +221,9 @@ def __init__(self, mu=0., cov=None, init=continuous.Flat.dist(),
221221
if cov.ndim != 2:
222222
raise ValueError('cov must be two dimensional.')
223223
self.cov = cov
224-
self.mu = mu
224+
self.mu = mu = tt.as_tensor_variable(mu)
225225
self.init = init
226-
self.mean = 0.
226+
self.mean = tt.as_tensor_variable(0.)
227227

228228
def logp(self, x):
229229
cov = self.cov
@@ -263,10 +263,10 @@ class MvStudentTRandomWalk(distribution.Continuous):
263263
def __init__(self, nu, mu=0., cov=None, init=continuous.Flat.dist(),
264264
*args, **kwargs):
265265
super(MvStudentTRandomWalk, self).__init__(*args, **kwargs)
266-
self.mu = mu
267-
self.nu = nu
266+
self.mu = mu = tt.as_tensor_variable(mu)
267+
self.nu = nu = tt.as_tensor_variable(nu)
268268
self.init = init
269-
self.mean = 0.
269+
self.mean = tt.as_tensor_variable(0.)
270270

271271
if cov is None:
272272
raise ValueError('A covariance matrix must be provided as cov argument.')

0 commit comments

Comments
 (0)