激活函数实现--3 Tanh函数实现

时间:2022-03-02 17:01:48

1.TANH函数的定义


激活函数实现--3 Tanh函数实现

激活函数实现--3 Tanh函数实现


2. TANH函数的导数

 
激活函数实现--3 Tanh函数实现



3.TANH函数的实现

Tanh主要是通过类Tanh来实现的,该类继承自AbstrcactActivation类,主要实现Activating接口和Derivating接口。
Tanh类的定义如下:
<span style="font-size:24px;">#ifndef TANH_H#define TANH_H

#include "abstractactivationfunction.h"


/**
* @brief The tanh class used to calculate the tanh activation function.
*
* @author sheng
* @date 2014-07-18
* @version 0.1
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the class
*
*/
class Tanh : public AbstractActivationFunction
{
public:
Tanh();
cv::Mat Activating(const cv::Mat &InputMat);
cv::Mat Derivating(const cv::Mat &InputMat);
};

#endif // TANH_H
</span>



函数的定义如下:
<span style="font-size:24px;">#include "tanh.h"

/**
* @brief The default constructor.
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*/
Tanh::Tanh()
{
}





/**
* @brief Calculating the tanh of the inputmat.
* @param InputMat The input mat
* @return the result of tanh(inputmat), whose size is the same of the
* InputMat.
*
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*
*/
cv::Mat Tanh::Activating(const cv::Mat &InputMat)
{
// convert the inputmat to the float mat
cv::Mat Floatmat = ConvertToFloatMat(InputMat);


// calculating the exp(x)
cv::Mat EXP_X;
cv::exp(Floatmat, EXP_X);


// calculating the exp(-x)
cv::Mat EXP_X_;
cv::exp(-Floatmat, EXP_X_);


// calculating the tanh(x)
cv::Mat Result = (EXP_X - EXP_X_) / (EXP_X + EXP_X_);


return Result;
}





/**
* @brief Calculating the derivative of the tanh.
* @param InputMat The input mat
* @return the result of the derivative of the tanh, whose size is the same of
* the InputMat.
*
*
* @author sheng
* @version 0.1
* @date 2014-07-18
*
* @history
* <author> <date> <version> <description>
* sheng 2014-07-18 0.1 build the function
*
*
*
*/
cv::Mat Tanh::Derivating(const cv::Mat &InputMat)
{
// convert the inputmat to float mat
cv::Mat FloatMat = ConvertToFloatMat(InputMat);

// calculating the tanh(x)
cv::Mat TanhX = Activating(FloatMat);

// calculting the tanh(x) * tanh(x)
cv::Mat SquareTanhX = TanhX.mul(TanhX);

// calculating the derivative of the tanh
cv::Mat Result = 1 - SquareTanhX;


return Result;
}</span>