mlpack
hyperbolic_tangent_kernel.hpp
Go to the documentation of this file.
1 
12 #ifndef MLPACK_CORE_KERNELS_HYPERBOLIC_TANGENT_KERNEL_HPP
13 #define MLPACK_CORE_KERNELS_HYPERBOLIC_TANGENT_KERNEL_HPP
14 
15 #include <mlpack/prereqs.hpp>
16 
17 namespace mlpack {
18 namespace kernel {
19 
29 {
30  public:
34  HyperbolicTangentKernel() : scale(1.0), offset(0.0)
35  { }
36 
44  HyperbolicTangentKernel(double scale, double offset) :
45  scale(scale), offset(offset)
46  { }
47 
59  template<typename VecTypeA, typename VecTypeB>
60  double Evaluate(const VecTypeA& a, const VecTypeB& b)
61  {
62  return tanh(scale * arma::dot(a, b) + offset);
63  }
64 
66  double Scale() const { return scale; }
68  double& Scale() { return scale; }
69 
71  double Offset() const { return offset; }
73  double& Offset() { return offset; }
74 
76  template<typename Archive>
77  void serialize(Archive& ar, const uint32_t /* version */)
78  {
79  ar(CEREAL_NVP(scale));
80  ar(CEREAL_NVP(offset));
81  }
82 
83  private:
84  double scale;
85  double offset;
86 };
87 
88 } // namespace kernel
89 } // namespace mlpack
90 
91 #endif
HyperbolicTangentKernel()
This constructor sets the default scale to 1.0 and offset to 0.0.
Definition: hyperbolic_tangent_kernel.hpp:34
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
Hyperbolic tangent kernel.
Definition: hyperbolic_tangent_kernel.hpp:28
The core includes that mlpack expects; standard C++ includes and Armadillo.
double Scale() const
Get scale factor.
Definition: hyperbolic_tangent_kernel.hpp:66
double Evaluate(const VecTypeA &a, const VecTypeB &b)
Evaluate the hyperbolic tangent kernel.
Definition: hyperbolic_tangent_kernel.hpp:60
double & Offset()
Modify offset for the kernel.
Definition: hyperbolic_tangent_kernel.hpp:73
void serialize(Archive &ar, const uint32_t)
Serialize the kernel.
Definition: hyperbolic_tangent_kernel.hpp:77
HyperbolicTangentKernel(double scale, double offset)
Construct the hyperbolic tangent kernel with custom scale factor and offset.
Definition: hyperbolic_tangent_kernel.hpp:44
double & Scale()
Modify scale factor.
Definition: hyperbolic_tangent_kernel.hpp:68
double Offset() const
Get offset for the kernel.
Definition: hyperbolic_tangent_kernel.hpp:71