comparison pylearn/sampling/mcmc.py @ 1447:fbe470217937

Use .get_value() and .set_value() of shared instead of the .value property
author Pascal Lamblin <lamblinp@iro.umontreal.ca>
date Wed, 16 Mar 2011 20:20:02 -0400
parents 492473059b37
children
comparison
equal deleted inserted replaced
1446:6e50d209b5f1 1447:fbe470217937
53 callable such that energy_fn(positions) 53 callable such that energy_fn(positions)
54 returns theano vector of energies. 54 returns theano vector of energies.
55 The len of this vector is the batchsize. 55 The len of this vector is the batchsize.
56 """ 56 """
57 57
58 batchsize = positions[0].value.shape[0] 58 batchsize = positions[0].get_value(borrow=True).shape[0]
59 self.s_rng = TT.shared_randomstreams.RandomStreams(seed) 59 self.s_rng = TT.shared_randomstreams.RandomStreams(seed)
60 self.positions = positions 60 self.positions = positions
61 self.prev_energy = shared(np.zeros(batchsize) + float('inf')) 61 self.prev_energy = shared(np.zeros(batchsize) + float('inf'))
62 self.avg_acceptance_rate = 0.5 62 self.avg_acceptance_rate = 0.5
63 self.stepsize = initial_stepsize 63 self.stepsize = initial_stepsize
64 64
65 s_stepsize = TT.scalar('stepsize') 65 s_stepsize = TT.scalar('stepsize')
66 66
67 new_positions = [p + s_stepsize * self.s_rng.normal(size=p.value.shape) 67 new_positions = [p + s_stepsize * self.s_rng.normal(size=p.get_value(borrow=True).shape)
68 for p in self.positions] 68 for p in self.positions]
69 69
70 # accept-reject according to Metropolis-Hastings 70 # accept-reject according to Metropolis-Hastings
71 71
72 energy = energy_fn(new_positions) 72 energy = energy_fn(new_positions)
88 self.stepsize = max(self.stepsize*self.stepsize_dec,self.stepsize_min) 88 self.stepsize = max(self.stepsize*self.stepsize_dec,self.stepsize_min)
89 else: 89 else:
90 self.stepsize = min(self.stepsize*self.stepsize_inc,self.stepsize_max) 90 self.stepsize = min(self.stepsize*self.stepsize_inc,self.stepsize_max)
91 91
92 def get_position(self): 92 def get_position(self):
93 return [q.value for q in self.positions] 93 return [q.get_value(borrow=True) for q in self.positions]
94 94
95 def draw(self, n_steps=None): 95 def draw(self, n_steps=None):
96 """Return the current sample in the Markov chain as a list of numpy arrays 96 """Return the current sample in the Markov chain as a list of numpy arrays
97 97
98 The size of the arrays will match the size of the `initial_position` argument to 98 The size of the arrays will match the size of the `initial_position` argument to