NeuralEngine
A Game Engine with embeded Machine Learning algorithms based on Gaussian Processes.
FgAEPSparseDGPLVM.h
1
11#pragma once
12
13#include <MachineLearning/FgSparseDeepGPLVMBaseModel.h>
14
15namespace NeuralEngine
16{
17 namespace MachineLearning
18 {
19 namespace GPModels
20 {
21 namespace AEP
22 {
23
65 template<typename Scalar>
66 class NE_IMPEXP SDGPLVM : public SparseDeepGPLVMBaseModel<Scalar>
67 {
68 public:
80 SDGPLVM(const af::array& Y, int latentDimension, HiddenLayerDescription description, Scalar alpha = 1.0,
81 Scalar priorMean = 0.0, Scalar priorVariance = 1.0, PropagationMode probMode = PropagationMode::MomentMatching,
82 LogLikType lType = LogLikType::Gaussian, XInit emethod = XInit::pca);
83
94 SDGPLVM(const af::array& Y, int latentDimension, std::vector<HiddenLayerDescription> descriptions, Scalar alpha = 1.0,
95 Scalar priorMean = 0.0, Scalar priorVariance = 1.0, PropagationMode probMode = PropagationMode::MomentMatching,
96 LogLikType lType = LogLikType::Gaussian, XInit emethod = XInit::pca);
97
105
111 virtual ~SDGPLVM();
112
123 virtual Scalar Function(const af::array& x, af::array& outGradient) override;
124
125 protected:
126
135 void CavityLatents(af::array& mx, af::array& vx);
136
149 af::array CavityGradientLatents(const af::array& dmx, const af::array& dvx, const af::array& m, const af::array& v);
150
163 Scalar ComputePhiLatents(const af::array& mx, const af::array& vx, af::array* dmx = nullptr, af::array* dvx = nullptr);
164
165 private:
167 PropagationMode pMode;
168
169 friend class boost::serialization::access;
170
171 template<class Archive>
172 void serialize(Archive& ar, unsigned int version)
173 {
174 ar& boost::serialization::base_object<SparseDeepGPLVMBaseModel<Scalar>>(*this);
175 //ar& boost::serialization::make_nvp("SparseDeepGPLVMBaseModel", boost::serialization::base_object<SparseDeepGPLVMBaseModel<Scalar>>(*this));
176 ar& BOOST_SERIALIZATION_NVP(dAlpha);
177 ar& BOOST_SERIALIZATION_NVP(pMode);
178 }
179 };
180 }
181 }
182 }
183}
Sparse deep GPLVM via Approximated Expectation Propagation (AEP).
SDGPLVM(const af::array &Y, int latentDimension, std::vector< HiddenLayerDescription > descriptions, Scalar alpha=1.0, Scalar priorMean=0.0, Scalar priorVariance=1.0, PropagationMode probMode=PropagationMode::MomentMatching, LogLikType lType=LogLikType::Gaussian, XInit emethod=XInit::pca)
Constructor.
af::array CavityGradientLatents(const af::array &dmx, const af::array &dvx, const af::array &m, const af::array &v)
Gradient of the cavity distribution w.r.t. latent points.
virtual Scalar Function(const af::array &x, af::array &outGradient) override
Cost function the given parameter inputs.
void CavityLatents(af::array &mx, af::array &vx)
Computes the cavity distribution of the latent points.
Scalar ComputePhiLatents(const af::array &mx, const af::array &vx, af::array *dmx=nullptr, af::array *dvx=nullptr)
Calculates the likelihood contribution of the latent points and its gradients.
SDGPLVM(const af::array &Y, int latentDimension, HiddenLayerDescription description, Scalar alpha=1.0, Scalar priorMean=0.0, Scalar priorVariance=1.0, PropagationMode probMode=PropagationMode::MomentMatching, LogLikType lType=LogLikType::Gaussian, XInit emethod=XInit::pca)
Constructor.
Base class with abstract and basic function definitions. All deep GP models will be derived from this...