NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
FgGPBaseLayer.h
1
11#pragma once
12
13#include <MachineLearning/FgILayer.h>
14#include <MachineLearning/FgKernels.h>
15#include <MachineLearning/FgGPLVMBaseModel.h>
16
17namespace NeuralEngine
18{
19 namespace MachineLearning
20 {
21 namespace GPModels
22 {
28 template<typename Scalar>
29 class NE_IMPEXP GPBaseLayer : public ILayer<Scalar>
30 {
31 public:
41 GPBaseLayer(int numPoints, int outputDim, int inputDim);
42
48 virtual ~GPBaseLayer();
49
58
67
68 virtual void InitParameters(af::array* X = nullptr);
69
77 virtual int GetNumParameters();
78
86 virtual void SetParameters(const af::array& param);
87
95 virtual af::array GetParameters();
96
107 virtual void ForwardPredictionPost(const af::array* mx, const af::array* vx, af::array& mout, af::array& vout);
108
121 virtual void SampleFromPost(const af::array& inX, af::array& outfsample);
122
130 virtual void FixKernelParameters(bool isfixed);
131
137 virtual void UpdateParameters();
138
147 virtual void SetDataSize(int length, int dimension) override;
148
156 void SetStyles(std::map<std::string, Style<Scalar>>* styles);
157
166
167
168 protected:
175
181 virtual void ReinitParameters();
182
183 int iq;
184
185 bool isFixedHypers;
186
188 std::map<std::string, Style<Scalar>>* mStyles;
189
191
192 private:
193 friend class boost::serialization::access;
194
195 template<class Archive>
196 void serialize(Archive& ar, unsigned int version)
197 {
198 ar& boost::serialization::base_object<ILayer<Scalar>>(*this);
199 //ar& boost::serialization::make_nvp("ILayer", boost::serialization::base_object<ILayer<Scalar>>(*this));
200
201 ar.register_type<LinearKernel<Scalar>>();
202 //ar.register_type<RBFKernel<Scalar>>();
203 ar.register_type<ARDKernel<Scalar>>();
204 //ar.register_type<WhiteKernel<Scalar>>();
205 ar.register_type<CompoundKernel<Scalar>>();
206 //ar.register_type<RBFAccelerationKernel<Scalar>>();
207 //ar.register_type<LinearAccelerationKernel<Scalar>>();
208
209 ar& BOOST_SERIALIZATION_NVP(iq);
210 ar& BOOST_SERIALIZATION_NVP(kernel);
211 ar& BOOST_SERIALIZATION_NVP(isFixedHypers);
212 ar& BOOST_SERIALIZATION_NVP(JITTER);
213 ar& BOOST_SERIALIZATION_NVP(mStyles);
214 }
215 };
216 }
217 }
218}
Automatic Relevance Determination kernel.
Definition: FgARDKernel.h:39
Abstract class for different GP likelihood layers.
Definition: FgGPBaseLayer.h:30
virtual int GetNumParameters()
Gets number of parameters to be optimized.
virtual void ReinitParameters()
Reinitializes the parameters.
IKernel< Scalar > * GetKernel()
Gets the kernel function.
virtual af::array GetParameters()
Gets the parameters for each optimization iteration.
void SetLatentDimension(int q)
Sets latent dimension.
virtual void FixKernelParameters(bool isfixed)
Sets fixation for hyperparameters.
void SetStyles(std::map< std::string, Style< Scalar > > *styles)
Sets the syles.
virtual void ForwardPredictionPost(const af::array *mx, const af::array *vx, af::array &mout, af::array &vout)
Forward prediction of posterior function values.
virtual void SetDataSize(int length, int dimension) override
Sets data size.
Scalar JITTER
for kernel matrix stability (positive definiteness)
std::map< std::string, Style< Scalar > > * mStyles
style variable
GPBaseLayer(int numPoints, int outputDim, int inputDim)
Constructor.
void SetKernel(IKernel< Scalar > *kern)
Sets a kernel function.
virtual void SetParameters(const af::array &param)
Sets the parameters for each optimization iteration.
virtual void SampleFromPost(const af::array &inX, af::array &outfsample)
Samples from posterior.
IKernel< Scalar > * kernel
kernel function
virtual void UpdateParameters()
Updates the parameters.
Abstract class for different kind of layers.
Definition: FgILayer.h:38