13#include <MachineLearning/FgILayer.h>
17 namespace MachineLearning
33 template<
typename Scalar>
63 virtual Scalar ComputeLogZ(
const af::array& mout,
const af::array& vout,
const af::array& y,
Scalar alpha = 1.0, af::array* dlogZ_dm =
nullptr,
64 af::array* dlogZ_dv =
nullptr, af::array* dlogZ_dm2 =
nullptr) = 0;
78 virtual void ComputeLogZGradients(
const af::array& mout,
const af::array& vout,
const af::array& y, af::array* dlogZ_dm =
nullptr,
79 af::array* dlogZ_dv =
nullptr, af::array* dlogZ_dm2 =
nullptr,
Scalar alpha = 1.0) = 0;
81 virtual Scalar BackpropagationGradients(
const af::array& mout,
const af::array& vout, af::array& dmout, af::array& dvout,
Scalar alpha = 1.0,
Scalar scale = 1.0) = 0;
83 virtual Scalar ComputeLogLikExp(
const af::array& mout,
const af::array& vout,
const af::array& y) = 0;
85 virtual void ComputeLogLikExpGradients(
const af::array& mout,
const af::array& vout,
const af::array& y, af::array* de_dm =
nullptr, af::array* de_dv =
nullptr) = 0;
87 virtual Scalar BackpropagationGradientsLogLikExp(
const af::array& mout,
const af::array& vout, af::array& dmout, af::array& dvout, af::array& y,
Scalar scale = 1.0) = 0;
89 virtual void ProbabilisticOutput(
const af::array& mf,
const af::array& vf, af::array& myOut, af::array& vyOut,
Scalar alpha = 1.0f) = 0;
91 virtual Scalar InitParameters() {
return 0.0f; }
159 friend class boost::serialization::access;
161 template<
class Archive>
162 void serialize(Archive& ar,
unsigned int version)
164 ar& boost::serialization::base_object<ILayer<Scalar>>(*this);
165 ar& BOOST_SERIALIZATION_NVP(lltype);
166 ar& BOOST_SERIALIZATION_NVP(isFixedParam);
167 ar& BOOST_SERIALIZATION_NVP(bDimMod);
Abstract class for different GP likelihood layers.
virtual Scalar ComputeLogZ(const af::array &mout, const af::array &vout, const af::array &y, Scalar alpha=1.0, af::array *dlogZ_dm=nullptr, af::array *dlogZ_dv=nullptr, af::array *dlogZ_dm2=nullptr)=0
Calculates the logZ.
virtual void UpdateParameters()
Updates the parameters.
LikelihoodBaseLayer(LogLikType type, int numPoints, int outputDim)
Constructor.
virtual void ComputeLogZGradients(const af::array &mout, const af::array &vout, const af::array &y, af::array *dlogZ_dm=nullptr, af::array *dlogZ_dv=nullptr, af::array *dlogZ_dm2=nullptr, Scalar alpha=1.0)=0
Calculates logZ gradients.
virtual void FixParameters(bool isfixed)
Set to fix the parameters or not for optimization.
virtual int GetNumParameters()
Gets number of parameters to be optimized.
LogLikType GetLogLikType()
Gets log likelihood type.
virtual af::array GetParameters()
Gets the parameters for each optimization iteration.
LikelihoodBaseLayer()
Default constructor.
virtual void SetParameters(const af::array ¶m)
Sets the parameters for each optimization iteration.
Abstract class for different kind of layers.