NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
FgGPStateSpaceBaseModel.h
1
11#pragma once
12
13//#include <MachineLearning/FgINode.h>
14#include <MachineLearning/FgGPBaseModel.h>
15
16namespace NeuralEngine
17{
18 namespace MachineLearning
19 {
20 namespace GPModels
21 {
30 template<typename Scalar>
31 class NE_IMPEXP GPSSBaseModel : public GPBaseModel<Scalar>, public GPNode<Scalar>
32 {
33 public:
48 GPSSBaseModel(const af::array& Y, int latentDimension, Scalar priorMean = 0.0,
49 Scalar priorVariance = 1.0, af::array& xControl = af::array(), PropagationMode probMode = PropagationMode::MomentMatching,
50 LogLikType lType = LogLikType::Gaussian, bool GPemission = true, bool controlToEmiss = true, XInit emethod = XInit::pca);
51
58
64 virtual ~GPSSBaseModel();
65
79 virtual void Optimise(
80 OptimizerType method = L_BFGS,
81 Scalar tol = 0.0,
82 bool reinit_hypers = true,
83 int maxiter = 1000,
84 int mb_size = 0,
85 LineSearchType lsType = MoreThuente,
86 bool disp = true,
87 int* cycle = nullptr
88 ) override;
89
97 virtual bool Init(af::array& mx);
98
108 virtual void PosteriorLatents(af::array& mx, af::array& vx);
109
117 virtual int GetNumParameters() override;
118
126 virtual void SetParameters(const af::array& param) override;
127
135 virtual af::array GetParameters() override;
136
143
144 void GetLatents(af::array& mx, af::array& vx);
145
146 virtual void AddWindowData(af::array data);
147
148 protected:
157 virtual af::array PosteriorGradientLatents(const af::array& dmx, const af::array& dvx);
158
165
166 int iq;
167 int iDControlEmiss;
168 int iDControlDyn;
169
170 Scalar dSn;
171
172 bool bGPemission;
173 bool bControlToEmiss;
174
179
180 af::array afFactorX1;
181 af::array afFactorX2;
182 af::array afPosteriorX1;
183 af::array afPosteriorX2;
184 af::array afXControl;
185 af::array afDynIndexes;
186
187 af::array afPriorX1;
188 af::array afPriorX2;
189 af::array afPriorX1Cav;
190 af::array afPriorX2Cav;
191 af::array afPriorMean;
192 af::array afPriorVariance;
193 af::array afPriorMeanCav;
195 af::array afGradMean;
196 af::array afGradVariance;
197 af::array afGradMeanCav;
199
201
203
204 //af::array afIndexes; //!< indexes of /f$\mathbf{X}/f$ for batch learning
205 XInit eEmMethod;
206
207 PropagationMode pMode;
208 private:
209 friend class boost::serialization::access;
210
211 template<class Archive>
212 void serialize(Archive& ar, unsigned int version)
213 {
214 ar& boost::serialization::base_object<GPBaseModel<Scalar>>(*this);
215 //ar& boost::serialization::make_nvp("GPLVMBaseModel", boost::serialization::base_object<GPLVMBaseModel<Scalar>>(*this));
216
217 ar& BOOST_SERIALIZATION_NVP(iq);
218 ar& BOOST_SERIALIZATION_NVP(iDControlEmiss);
219 ar& BOOST_SERIALIZATION_NVP(iDControlDyn);
220 ar& BOOST_SERIALIZATION_NVP(bGPemission);
221 ar& BOOST_SERIALIZATION_NVP(bControlToEmiss);
222 ar& BOOST_SERIALIZATION_NVP(afXControl);
223 ar& BOOST_SERIALIZATION_NVP(afDynIndexes);
224 ar& BOOST_SERIALIZATION_NVP(dPriorMean);
225 ar& BOOST_SERIALIZATION_NVP(dPriorVariance);
226 ar& BOOST_SERIALIZATION_NVP(afFactorX1);
227 ar& BOOST_SERIALIZATION_NVP(afFactorX2);
228 ar& BOOST_SERIALIZATION_NVP(eEmMethod);
229 ar& BOOST_SERIALIZATION_NVP(pMode);
230 }
231 };
232 }
233 }
234}
Base class with abstract and basic function definitions. All GP models will be derived from this clas...
Definition: FgGPBaseModel.h:40
Base class with abstract and basic function definitions. All GP state space models will be derived fr...
virtual void PosteriorLatents(af::array &mx, af::array &vx)
Get posterior distribution of latent variables /f$\mathbf{X}/f$.
af::array afFactorX2
natural parameter factor 2 for latent variable
af::array afPriorVarianceCav
prior variance for hierarchy mode
void UpdateDynamicIndexes()
Updates the dynamic indexes.
virtual void SetParameters(const af::array &param) override
Sets the parameters for each optimization iteration.
virtual af::array GetParameters() override
Gets the parameters for each optimization iteration.
virtual int GetNumParameters() override
Gets number of parameters.
af::array afGradVarianceCav
prior variance gradient for hiersrchy mode
GPSSBaseModel(const af::array &Y, int latentDimension, Scalar priorMean=0.0, Scalar priorVariance=1.0, af::array &xControl=af::array(), PropagationMode probMode=PropagationMode::MomentMatching, LogLikType lType=LogLikType::Gaussian, bool GPemission=true, bool controlToEmiss=true, XInit emethod=XInit::pca)
Constructor.
af::array afPosteriorX2
posterior natural parameter 2 for latent variable
virtual void UpdateParametersInternal()
Updates the parameters.
virtual af::array PosteriorGradientLatents(const af::array &dmx, const af::array &dvx)
Posterior gradient of latent inputs /f$\mathbf{X}/f$.
af::array afPosteriorX1
posterior natural parameter 1 for latent variable
af::array afGradVariance
prior variance gradient for hiersrchy mode
af::array afPriorVariance
prior variance for hierarchy mode
af::array afGradMean
prior mean gradient for hiersrchy mode
af::array afFactorX1
natural parameter factor 1 for latent variable
virtual void Optimise(OptimizerType method=L_BFGS, Scalar tol=0.0, bool reinit_hypers=true, int maxiter=1000, int mb_size=0, LineSearchType lsType=MoreThuente, bool disp=true, int *cycle=nullptr) override
Optimizes the model parameters for best fit.
af::array afGradMeanCav
prior mean gradient for hiersrchy mode
virtual bool Init(af::array &mx)
Initializes the model.
This class represents grouping nodes in a hiearchy.
Definition: FgGPNode.h:42