MLPACK  1.0.4
hyperbolic_tangent_kernel.hpp
Go to the documentation of this file.
00001 
00022 #ifndef __MLPACK_CORE_KERNELS_HYPERBOLIC_TANGENT_KERNEL_HPP
00023 #define __MLPACK_CORE_KERNELS_HYPERBOLIC_TANGENT_KERNEL_HPP
00024 
00025 #include <mlpack/core.hpp>
00026 
00027 namespace mlpack {
00028 namespace kernel {
00029 
00038 class HyperbolicTangentKernel
00039 {
00040  public:
00044   HyperbolicTangentKernel() : scale(1.0), offset(0.0)
00045   { }
00046 
00054   HyperbolicTangentKernel(double scale, double offset) :
00055       scale(scale), offset(offset)
00056   { }
00057 
00067   template<typename VecType>
00068   double Evaluate(const VecType& a, const VecType& b)
00069   {
00070     return tanh(scale * arma::dot(a, b) + offset);
00071   }
00072 
00074   double Scale() const { return scale; }
00076   double& Scale() { return scale; }
00077 
00079   double Offset() const { return offset; }
00081   double& Offset() { return offset; }
00082 
00083  private:
00084   double scale;
00085   double offset;
00086 };
00087 
00088 }; // namespace kernel
00089 }; // namespace mlpack
00090 
00091 #endif