softplus_function.hpp
Go to the documentation of this file.
1 
26 #ifndef MLPACK_METHODS_ANN_ACTIVATION_FUNCTIONS_SOFTPLUS_FUNCTION_HPP
27 #define MLPACK_METHODS_ANN_ACTIVATION_FUNCTIONS_SOFTPLUS_FUNCTION_HPP
28 
29 #include <mlpack/prereqs.hpp>
30 
31 namespace mlpack {
32 namespace ann {
33 
44 {
45  public:
52  static double Fn(const double x)
53  {
54  if (x < DBL_MAX)
55  return x > -DBL_MAX ? std::log(1 + std::exp(x)) : 0;
56  return 1.0;
57  }
58 
65  template<typename InputType, typename OutputType>
66  static void Fn(const InputType& x, OutputType& y)
67  {
68  y = x;
69  y.transform([](double val) {return (Fn(val));} );
70  }
71 
78  static double Deriv(const double y)
79  {
80  return 1.0 / (1 + std::exp(-y));
81  }
82 
89  template<typename InputType, typename OutputType>
90  static void Deriv(const InputType& y, OutputType& x)
91  {
92  x = 1.0 / (1 + arma::exp(-y));
93  }
94 
101  static double Inv(const double y)
102  {
103  return y > 0 ? arma::trunc_log(arma::trunc_exp(y) - 1) : 0;
104  }
105 
112  template<typename InputType, typename OutputType>
113  static void Inv(const InputType& y, OutputType& x)
114  {
115  x = y;
116  x.transform([](double val) {return (Inv(val));} );
117  }
118 }; // class SoftplusFunction
119 
120 } // namespace ann
121 } // namespace mlpack
122 
123 #endif
static void Deriv(const InputType &y, OutputType &x)
Computes the first derivatives of the softplus function.
static void Fn(const InputType &x, OutputType &y)
Computes the softplus function.
static void Inv(const InputType &y, OutputType &x)
Computes the inverse of the softplus function.
.hpp
Definition: add_to_po.hpp:21
static double Deriv(const double y)
Computes the first derivative of the softplus function.
The core includes that mlpack expects; standard C++ includes and Armadillo.
static double Fn(const double x)
Computes the softplus function.
The softplus function, defined by.
static double Inv(const double y)
Computes the inverse of the softplus function.