13
13
from theano .tensor import exp , concatenate , dvector
14
14
import theano .tensor as T
15
15
from theano .sandbox .rng_mrg import MRG_RandomStreams
16
- from collections import OrderedDict
16
+ from collections import OrderedDict , namedtuple
17
17
18
18
from ..progressbar import progress_bar
19
19
20
20
__all__ = ['advi' ]
21
21
22
+ ADVIFit = namedtuple ('ADVIFit' , 'means, stds, elbo_vals' )
23
+
22
24
def advi (vars = None , start = None , model = None , n = 5000 , progressbar = True ,
23
25
learning_rate = .001 , epsilon = .1 ):
24
26
model = modelcontext (model )
@@ -51,7 +53,7 @@ def advi(vars=None, start=None, model=None, n=5000, progressbar=True,
51
53
# w is in log space
52
54
for var in w .keys ():
53
55
w [var ] = np .exp (w [var ])
54
- return u , w , elbos
56
+ return ADVIFit ( u , w , elbos )
55
57
56
58
def run_adagrad (uw , grad , elbo , inarray , n , learning_rate = .001 , epsilon = .1 , progressbar = True ):
57
59
shared_inarray = theano .shared (uw , 'uw_shared' )
@@ -67,10 +69,10 @@ def run_adagrad(uw, grad, elbo, inarray, n, learning_rate=.001, epsilon=.1, prog
67
69
progress = progress_bar (n )
68
70
69
71
# Run adagrad steps
70
- elbos = []
72
+ elbos = np . empty ( n )
71
73
for i in range (n ):
72
74
uw_i , g , e = f ()
73
- elbos . append ( e )
75
+ elbos [ i ] = e
74
76
if progressbar :
75
77
progress .update (i )
76
78
0 commit comments