KJB
|
#include <likelihood_dynamics.h>
Public Member Functions | |
Likelihood_dynamics (double ialpha=0.99, unsigned int ikick=0) | |
Likelihood_dynamics (kjb::Vector iparameters, kjb::Vector ideltas, kjb::Vector ietas, double ialpha=0.99, unsigned int ikick=0) | |
Likelihood_dynamics (const Likelihood_dynamics &src) | |
Likelihood_dynamics & | operator= (const Likelihood_dynamics &src) |
virtual | ~Likelihood_dynamics () |
virtual void | run (unsigned int iterations) |
virtual void | set_index (unsigned int iindex) |
virtual void | set_index (Int_vector iindex) |
Public Member Functions inherited from kjb::Abstract_dynamics | |
Abstract_dynamics (double ialpha=0.99, unsigned int ikick=0) | |
Abstract_dynamics (kjb::Vector iparameters, kjb::Vector ideltas, double ialpha=0.99, unsigned int ikick=0) | |
Abstract_dynamics (const Abstract_dynamics &src) | |
Abstract_dynamics & | operator= (const Abstract_dynamics &src) |
virtual | ~Abstract_dynamics () |
void | set_num_parameters (unsigned int num_params) |
Sets the number of parameters we will be sampling over. More... | |
Protected Member Functions | |
virtual void | log_sample () |
virtual void | compute_energy_gradient () |
virtual double | compute_likelihood ()=0 |
Protected Member Functions inherited from kjb::Abstract_dynamics | |
void | run (unsigned int iterations) |
Implements stochastic dynamics sampling on a set of parameters. This implementation follows the algorithm described in the 1993 Neal Paper, with leapfrog discretization and stochastic transitions weighted by the stochastic alpha parameter. This function MUST be kept protected so that only classes that inherit from this class can use it. Each of this derived class will have to provide its own public interface to this method. More... | |
Protected Attributes | |
kjb::Vector | etas |
The size of the step to use when computing the gradient of the energy function, in a two point estimate fashion. This varies for each parameter we are sampling over. More... | |
std::vector< boost::function1 < void, double > > | callbacks |
We have a callback for each parameter we are sampling over. Each of them returns a void and accepts a double. Each callback should change the model according to the sampled parameter value. More... | |
std::vector< boost::function0 < double > > | parameter_getters |
We have a callback for each parameter we are sampling over. Each of them returns a double. Each callback should get the parameter value to initialize the sampling. More... | |
Protected Attributes inherited from kjb::Abstract_dynamics | |
kjb::Vector | parameters |
The parameters to sample over. More... | |
kjb::Vector | deltas |
The size of the step to take in the gradient direction. This step size is different for each parameter we are sampling over. More... | |
kjb::Vector | gradients |
kjb::Vector | stochastic_momenta |
kjb::Vector | momenta |
kjb::Vector | temp_momenta |
kjb::Vector | stochastic_transition |
kjb::MV_gaussian_distribution * | mv_gauss |
double | alpha |
double | st_alpha |
unsigned int | kick |
dynamics sampling on a set of parameters.This implementation follows the algorithm described in the 1993 Neal Paper, with leapfrog discretization and stochastic transitions weighted by the stochastic alpha parameter. Here the user has to provide a likelihood function in order to compute the gradient of the energy function
|
inline |
ialpha | This parameter tweaks the contribution of the stochastic transition. If it is close to one, the random transition has little weight, and the dynamics mostly follow the momenta. The closer it gets to zero, the more the stochastic transitions will influence the selected trajectory. |
ikick | This parameters is used to reset the momenta to the correct trajectory, thus eliminating the effect of the stochastic transitions. It specifies after how many transitions the momenta are to be reset. This was not fully tested |
|
inline |
iparameters | The initial values of the parameters to sample over |
ideltas | The size of the step to take in the gradient direction. This step size is different for each parameter we are sampling over |
ialpha | This parameter tweaks the contribution of the stochastic transition. If it is close to one, the random transition has little weight, and the dynamics mostly follow the momenta. The closer it gets to zero, the more the stochastic transitions will influence the selected trajectory. |
ikick | this parameters is used to reset the momenta to the correct trajectory, thus eliminating the effect of the stochastic transitions. It specifies after how many transitions the momenta are to be reset. This was not fully tested |
Likelihood_dynamics::Likelihood_dynamics | ( | const Likelihood_dynamics & | src | ) |
|
inlinevirtual |
|
protectedvirtual |
Implements kjb::Abstract_dynamics.
|
protectedpure virtual |
|
inlineprotectedvirtual |
Reimplemented from kjb::Abstract_dynamics.
Likelihood_dynamics & Likelihood_dynamics::operator= | ( | const Likelihood_dynamics & | src | ) |
|
virtual |
Reimplemented in kjb::Discrete_change_size, kjb::Focal_scale_dynamics, kjb::Parapiped_stretch_dynamics, and kjb::Parapiped_camera_dynamics.
|
inlinevirtual |
|
inlinevirtual |
|
protected |
We have a callback for each parameter we are sampling over. Each of them returns a void and accepts a double. Each callback should change the model according to the sampled parameter value.
|
protected |
The size of the step to use when computing the gradient of the energy function, in a two point estimate fashion. This varies for each parameter we are sampling over.
|
protected |
We have a callback for each parameter we are sampling over. Each of them returns a double. Each callback should get the parameter value to initialize the sampling.