def __build_free_phase(self):
n_iterations = T.iscalar('n_iterations')
epsilon = T.fscalar('epsilon')
def step(*layers):
E_sum = T.sum(self.__energy(layers))
layers_dot = T.grad(-E_sum, list(layers)) # temporal derivative of the state (free trajectory)
layers_new = [layers[0]]+[T.clip(layer+epsilon*dot,0.,1.) for layer,dot in zip(layers,layers_dot)][1:]
return layers_new
( layers, updates ) = theano.scan(
step,
outputs_info=self.layers,
n_steps=n_iterations
)
layers_end = [layer[-1] for layer in layers]
for particles,layer,layer_end in zip(self.persistent_particles,self.layers[1:],layers_end[1:]):
updates[particles] = T.set_subtensor(layer,layer_end)
free_phase = theano.function(
inputs=[n_iterations,epsilon],
outputs=[],
updates=updates
)
return free_phase
model.py 文件源码
python
阅读 37
收藏 0
点赞 0
评论 0
评论列表
文章目录