NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
FgSparseGPBaseModel.h
1
11#pragma once
12
13#include <MachineLearning/FgGPBaseModel.h>
14#include <MachineLearning/FgSparseGPBaseLayer.h>
15
16namespace NeuralEngine
17{
18 namespace MachineLearning
19 {
20 namespace GPModels
21 {
22 namespace PowerEP
23 {
24 template<typename Scalar>
25 class SGPLayer;
26 }
27
28 namespace AEP
29 {
30 template<typename Scalar>
31 class SGPLayer;
32 }
33
34 namespace VFE
35 {
36 //template<Scalar>
37 class SGPLayer;
38 }
39
57 template<typename Scalar>
58 class NE_IMPEXP SparseGPBaseModel : public GPBaseModel<Scalar>
59 {
60 public:
61
72 SparseGPBaseModel(const af::array& Y, const af::array& X, int numInducing = 200, LogLikType lType = LogLikType::Gaussian);
73
80
87
97 virtual void PredictF(const af::array& testInputs, af::array& mf, af::array& vf) override;
98
108 virtual void SampleY(const af::array inputs, int numSamples, af::array& outFunctions) override;
109
117 af::array GetTrainingInputs();
118
126 void SetTrainingInputs(af::array& inputs);
127
135 af::array GetPseudoInputs();
136
144 virtual bool Init() override;
145
153 virtual int GetNumParameters() override;
154
162 virtual void SetParameters(const af::array& param) override;
163
171 virtual af::array GetParameters() override;
172
178 virtual void UpdateParameters() override;
179
187 virtual void FixKernelParameters(bool isfixed);
188
196 virtual void FixInducing(bool isfixed);
197
206
207 protected:
208 int ik;
209 int iq;
210 af::array afX;
211
213
214 private:
215 friend class AEP::SGPLayer<Scalar>;
216 friend class PowerEP::SGPLayer<Scalar>;
217 //friend class VFE::SGPLayer/*<Scalar>*/;
218
219 friend class boost::serialization::access;
220
221 template<class Archive>
222 void serialize(Archive& ar, unsigned int version)
223 {
224 ar& boost::serialization::base_object<GPBaseModel<Scalar>>(*this);
225
226 //ar& boost::serialization::make_nvp("GPBaseModel", boost::serialization::base_object<GPBaseModel<Scalar>>(*this));
227
228 ar.register_type<AEP::SGPLayer<Scalar>>();
229 ar.register_type<PowerEP::SGPLayer<Scalar>>();
230 /*ar.register_type<VFE::SGPLayer>();*/
231
232 ar& BOOST_SERIALIZATION_NVP(ik);
233 ar& BOOST_SERIALIZATION_NVP(iq);
234 ar& BOOST_SERIALIZATION_NVP(afX);
235 ar& BOOST_SERIALIZATION_NVP(gpLayer);
236 }
237 };
238 }
239 }
240}
Base class with abstract and basic function definitions. All GP models will be derived from this clas...
Definition: FgGPBaseModel.h:40
Abstract class for different GP likelihood layers.
SparseGPBaseModel(const af::array &Y, const af::array &X, int numInducing=200, LogLikType lType=LogLikType::Gaussian)
Constructor.
af::array GetTrainingInputs()
Gets training inputs X.
virtual void UpdateParameters() override
Updates the parameters.
virtual void FixInducing(bool isfixed)
Set fixation for inducing inputs.
virtual void SetParameters(const af::array &param) override
Sets the parameters for each optimization iteration.
virtual bool Init() override
Initializes the model.
virtual void PredictF(const af::array &testInputs, af::array &mf, af::array &vf) override
Predict noise free functions values .
virtual int GetNumParameters() override
Gets number of parameters.
SparseGPBaseLayer< Scalar > * GetGPLayer()
Gets the gp layer.
virtual void FixKernelParameters(bool isfixed)
Sets fixation for hyperparameters.
virtual void SampleY(const af::array inputs, int numSamples, af::array &outFunctions) override
Generate function samples from posterior.
virtual af::array GetParameters() override
Gets the parameters for each optimization iteration.
void SetTrainingInputs(af::array &inputs)
Gets training inputs X.