13#include <MachineLearning/FgIKernel.h>
17 namespace MachineLearning
33 template<
typename Scalar>
96 void LogLikGradientX(
const af::array& inX,
const af::array& indL_dK, af::array& outdL_dX);
110 void LogLikGradientX(
const af::array& inXu,
const af::array& indL_dKuu,
const af::array& inX,
const af::array& indL_dKuf, af::array& outdL_dXu, af::array& outdL_dX);
122 virtual void LogLikGradientX(
const af::array& inX1,
const af::array& inX2,
const af::array& indL_dK, af::array& outdL_dX)
override;
134 void LogLikGradientParam(
const af::array& inX1,
const af::array& inX2,
const af::array& indL_dK, af::array& outdL_dParam);
147 af::array& outdL_dParam,
const af::array* dlogZ_dv)
override;
159 void GradX(
const af::array& inX1,
const af::array& inX2,
int q, af::array& outdK_dX);
169 void DiagGradX(
const af::array& inX, af::array& outDiagdK_dX);
180 void DiagGradParam(
const af::array& inX,
const af::array& inCovDiag, af::array& outDiagdK_dParam);
194 virtual void LogLikGradientCompundKfu(
const af::array& indL_dKfu,
const af::array& inX,
const af::array& inXu,
195 af::array* outdL_dParam, af::array* outdL_dXu,
const af::array* dlogZ_dv =
nullptr, af::array* outdL_dX =
nullptr)
override;
197 virtual void LogGradientCompoundKuu(
const af::array& inXu,
const af::array& inCovDiag,
198 af::array* outdL_dParam, af::array* outdL_dXu)
override;
253 af::array& outPsi0, af::array& outPsi1, af::array& outPsi2)
override;
272 void PsiDerivatives(
const af::array& indL_dPsi0,
const af::array& inPsi1,
const af::array& indL_dPsi1,
const af::array& inPsi2,
const af::array& indL_dPsi2,
273 const af::array& inXu,
const af::array& inMu,
const af::array& inS, af::array& outdL_dParam, af::array& outdL_dXu,
274 af::array& outdL_dMu, af::array& outdL_dS,
const af::array* dlogZ_dv =
nullptr)
override;
293 void Psi2Derivative(
const af::array& indL_dPsi2,
const af::array& inXu,
const af::array& inMu,
294 const af::array& inS, af::array& outdL_dParam, af::array& outdL_dXu, af::array& outdL_dMu, af::array& outdL_dS);
297 friend class boost::serialization::access;
299 template<
class Archive>
300 void serialize(Archive& ar,
unsigned int version)
302 ar & boost::serialization::base_object<IKernel<Scalar>>(*this);
304 ar& BOOST_SERIALIZATION_NVP(dVariance);
LinearKernel()
Default constructor.
void LogLikGradientX(const af::array &inXu, const af::array &indL_dKuu, const af::array &inX, const af::array &indL_dKuf, af::array &outdL_dXu, af::array &outdL_dX)
Computes dL / dX and dL / dXu for sparse approximation GP.
void SetParameters(const af::array ¶m)
Sets the parameters.
void DiagGradX(const af::array &inX, af::array &outDiagdK_dX)
Derivative of diagonal elemts of K w.r.t X.
void Psi2Derivative(const af::array &indL_dPsi2, const af::array &inXu, const af::array &inMu, const af::array &inS, af::array &outdL_dParam, af::array &outdL_dXu, af::array &outdL_dMu, af::array &outdL_dS)
Parameter and variable derivatives w.r.t. Psi2.
void ComputeDiagonal(const af::array &inX, af::array &outDiagonal)
Calculates only diagonal elements of K.
void PsiDerivatives(const af::array &indL_dPsi0, const af::array &inPsi1, const af::array &indL_dPsi1, const af::array &inPsi2, const af::array &indL_dPsi2, const af::array &inXu, const af::array &inMu, const af::array &inS, af::array &outdL_dParam, af::array &outdL_dXu, af::array &outdL_dMu, af::array &outdL_dS, const af::array *dlogZ_dv=nullptr) override
Parameter and variable derivatives w.r.t. all Psi statistics.
void ComputeKernelMatrix(const af::array &inX1, const af::array &inX2, af::array &outMatrix)
Computes the kernel matrix of the kernel.
void ComputePsiStatistics(const af::array &inXu, const af::array &inMu, const af::array &inS, af::array &outPsi0, af::array &outPsi1, af::array &outPsi2) override
PSI statistics.
virtual void LogLikGradientParam(const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dParam, const af::array *dlogZ_dv) override
Computes the gradient of LL w.r.t. the kernel parameters.
void GradX(const af::array &inX1, const af::array &inX2, int q, af::array &outdK_dX)
Computes dK/dX.
af::array GetParameters()
Gets the parameters.
virtual void SetLogParameters(const af::array ¶m) override
Sets log parameters.
virtual void InitParameters(Scalar inMedian) override
Initializes the parameters based on the median of the distances of /f$\mathbf{X}/f$.
~LinearKernel()
Destructor.
void LogLikGradientParam(const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dParam)
Computes the gradient of the kernel parameters.
virtual af::array GetLogParameters() override
Gets log parameters.
LinearKernel(int numdims)
Constructor.
virtual void LogLikGradientX(const af::array &inX1, const af::array &inX2, const af::array &indL_dK, af::array &outdL_dX) override
Computes dL / dX for sparse approximation GP.
void LogLikGradientX(const af::array &inX, const af::array &indL_dK, af::array &outdL_dX)
Computes dL/dX for full fit GP.
void DiagGradParam(const af::array &inX, const af::array &inCovDiag, af::array &outDiagdK_dParam)
Derivative of diagonal elemts of K w.r.t kernel parameters.