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