mlpack 3.4.2
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
31namespace mlpack {
32namespace ann {
33
44{
45 public:
52 static double Fn(const double x)
53 {
54 const double val = std::log(1 + std::exp(x));
55 if (std::isfinite(val))
56 return val;
57 return x;
58 }
59
66 template<typename InputType, typename OutputType>
67 static void Fn(const InputType& x, OutputType& y)
68 {
69 y.set_size(arma::size(x));
70
71 for (size_t i = 0; i < x.n_elem; ++i)
72 y(i) = Fn(x(i));
73 }
74
81 static double Deriv(const double y)
82 {
83 return 1.0 / (1 + std::exp(-y));
84 }
85
92 template<typename InputType, typename OutputType>
93 static void Deriv(const InputType& y, OutputType& x)
94 {
95 x = 1.0 / (1 + arma::exp(-y));
96 }
97
104 static double Inv(const double y)
105 {
106 const double val = std::log(std::exp(y) - 1);
107 if (std::isfinite(val))
108 return val;
109 return y;
110 }
111
118 template<typename InputType, typename OutputType>
119 static void Inv(const InputType& y, OutputType& x)
120 {
121 x.set_size(arma::size(y));
122
123 for (size_t i = 0; i < y.n_elem; ++i)
124 x(i) = Inv(y(i));
125 }
126}; // class SoftplusFunction
127
128} // namespace ann
129} // namespace mlpack
130
131#endif
The softplus function, defined by.
static double Fn(const double x)
Computes the softplus function.
static double Deriv(const double y)
Computes the first derivative of the softplus function.
static double Inv(const double y)
Computes the inverse of the softplus function.
static void Inv(const InputType &y, OutputType &x)
Computes the inverse of the softplus function.
static void Fn(const InputType &x, OutputType &y)
Computes the softplus function.
static void Deriv(const InputType &y, OutputType &x)
Computes the first derivatives of the softplus function.
Linear algebra utility functions, generally performed on matrices or vectors.
Definition: cv.hpp:1
The core includes that mlpack expects; standard C++ includes and Armadillo.