13#include <MachineLearning/FgSparseGPBaseLayer.h>
17 namespace MachineLearning
38 template<
typename Scalar>
53 SGPLayer(
int numPoints,
int numPseudos,
int outputDim,
int inputDim);
78 void ForwardPredictionCavity(af::array& outMout, af::array& outVout, af::array* psi1out, af::array* psi2out,
const af::array& mx,
const af::array* vx =
nullptr,
Scalar alpha = 1.0, PropagationMode mode = PropagationMode::MomentMatching);
110 af::array
BackpropGradientsReg(
const af::array& m,
const af::array& v,
const af::array& dlogZ_dm,
const af::array& dlogZ_dv,
const af::array& x,
111 std::map<std::string, af::array>* outGrad_cav =
nullptr,
Scalar alpha = 1.0);
130 af::array
BackpropGradientsMM(
const af::array& m,
const af::array& v,
const af::array& dlogZ_dm,
const af::array& dlogZ_dv,
131 const af::array& psi1,
const af::array& psi2,
const af::array& mx,
const af::array& vx, std::map<std::string, af::array>* outGrad_cav,
Scalar alpha = 1.0);
149 af::array
BackpropGradientsMC(
const af::array& m,
const af::array& v,
const af::array& eps,
const af::array& dlogZ_dm,
const af::array& dlogZ_dv,
const af::array& x,
150 std::map<std::string, af::array>* outGradInput,
Scalar alpha = 1.0);
229 void ForwardPredictionRandomCavity(af::array& mout, af::array& vout, af::array* psi1out, af::array* psi2out,
const af::array& mx,
const af::array& vx, PropagationMode mode,
Scalar alpha = 1.0);
255 virtual void ForwardPredictionRandomPost(
const af::array& mx,
const af::array& vx, af::array& mout, af::array& vout, PropagationMode mode = PropagationMode::MomentMatching)
override;
304 void ComputeCavityGradientU(af::array& dMucav, af::array& dSucav, af::array& out_dT1, af::array& out_dT2, af::array& out_dInvKuu,
Scalar alpha = 1.0f);
348 af::array afGammaHat;
351 af::array afBetaStochastic;
352 af::array afBetaHatStochastic;
357 af::array afInvSuHat;
358 af::array afInvSuMuHat;
359 af::array afSuMuMuHat;
362 friend class boost::serialization::access;
363 template<
typename>
friend class SDGPR;
365 template<
class Archive>
366 void serialize(Archive& ar,
unsigned int version)
368 ar& boost::serialization::base_object<SparseGPBaseLayer<Scalar>>(*this);
Deep sparse Gaussian process via Approximated Expectation Propagation (AEP).
Scalar ComputePhiPrior()
Calculates energy contribution phi prior.
SGPLayer()
Default constructor.
void ForwardPredictionRandomPostMM(const af::array &mx, const af::array &vx, af::array &mout, af::array &vout)
Forward prediction through posterior via Moment Matching.
void ComputeCavity(Scalar alpha=1.0f)
Calculates the cavity.
af::array BackpropGradientsMC(const af::array &m, const af::array &v, const af::array &eps, const af::array &dlogZ_dm, const af::array &dlogZ_dv, const af::array &x, std::map< std::string, af::array > *outGradInput, Scalar alpha=1.0)
Back propagation gradients through MCMC.
void ForwardPredictionDeterministicPost(const af::array &mx, af::array *mout, af::array *vout) override
Deterministic forward propagation through posterior.
void ForwardPredictionRandomCavity(af::array &mout, af::array &vout, af::array *psi1out, af::array *psi2out, const af::array &mx, const af::array &vx, PropagationMode mode, Scalar alpha=1.0)
Forward prediction through random cavity.
virtual void UpdateParameters() override
Updates the parameters.
void ComputePosteriorGradientU(af::array &dMu, af::array &dSu, af::array &out_dT1, af::array &out_dT2, af::array &out_dInvKuu)
Calculates the gradient contributions of posterior.
virtual ~SGPLayer()
Destructor.
void ComputeCavityGradientU(af::array &dMucav, af::array &dSucav, af::array &out_dT1, af::array &out_dT2, af::array &out_dInvKuu, Scalar alpha=1.0f)
Calculates gradient contributions of cavity distribution.
void ForwardPredictionRandomCavityMC(af::array &mout, af::array &vout, af::array &xout, af::array &eps, const af::array &mx, const af::array &vx, Scalar alpha=1.0)
Forward prediction random cavity MCMC.
void ForwardPredictionCavity(af::array &outMout, af::array &outVout, af::array *psi1out, af::array *psi2out, const af::array &mx, const af::array *vx=nullptr, Scalar alpha=1.0, PropagationMode mode=PropagationMode::MomentMatching)
Forward prediction through cavity.
void UpdateFactor(af::array &n, std::map< std::string, af::array > grad_cav, Scalar alpha, Scalar decay=0)
Update step of PowerEP.
af::array BackpropGradientsMM(const af::array &m, const af::array &v, const af::array &dlogZ_dm, const af::array &dlogZ_dv, const af::array &psi1, const af::array &psi2, const af::array &mx, const af::array &vx, std::map< std::string, af::array > *outGrad_cav, Scalar alpha=1.0)
Back propagation gradients through moment matching.
Scalar ComputePhiCavity()
Calculates energy contribution phi cavity.
virtual void ForwardPredictionRandomPost(const af::array &mx, const af::array &vx, af::array &mout, af::array &vout, PropagationMode mode=PropagationMode::MomentMatching) override
Forward prediction through random posterior.
SGPLayer(int numPoints, int numPseudos, int outputDim, int inputDim)
Constructor.
Scalar ComputePhiPosterior()
Calculates energy contribution phi posterior.
af::array BackpropGradientsReg(const af::array &m, const af::array &v, const af::array &dlogZ_dm, const af::array &dlogZ_dv, const af::array &x, std::map< std::string, af::array > *outGrad_cav=nullptr, Scalar alpha=1.0)
Back propagation gradients through usual GP regression task.
Scalar ComputePhi(Scalar alpha)
Computes the weighted sum of the log-partitions of prior, post and cav.
void ForwardPredictionRandomCavityMM(af::array &mout, af::array &vout, af::array *psi1out, af::array *psi2out, const af::array &mx, const af::array &vx, Scalar alpha=1.0)
Forward prediction random cavity moment matching.
void ForwardPredictionDeterministicCavity(af::array &outMout, af::array &outVout, af::array *kfuOut, const af::array &mx, Scalar alpha=1.0)
Forward prediction through deterministic cavity.
Abstract class for different GP likelihood layers.