Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TActivationTanh.h
Go to the documentation of this file.
1 // @(#)root/tmva $Id$
2 // Author: Matt Jachowski
3 
4 /**********************************************************************************
5  * Project: TMVA - a Root-integrated toolkit for multivariate data analysis *
6  * Package: TMVA *
7  * Class : TMVA::TActivationTanh *
8  * Web : http://tmva.sourceforge.net *
9  * *
10  * Description: *
11  * Tanh activation function for TNeuron *
12  * *
13  * Authors (alphabetical): *
14  * Matt Jachowski <jachowski@stanford.edu> - Stanford University, USA *
15  * *
16  * Copyright (c) 2005: *
17  * CERN, Switzerland *
18  * *
19  * Redistribution and use in source and binary forms, with or without *
20  * modification, are permitted according to the terms listed in LICENSE *
21  * (http://tmva.sourceforge.net/LICENSE) *
22  **********************************************************************************/
23 
24 #ifndef ROOT_TMVA_TActivationTanh
25 #define ROOT_TMVA_TActivationTanh
26 
27 //////////////////////////////////////////////////////////////////////////
28 // //
29 // TActivationTanh //
30 // //
31 // Tanh activation function for TNeuron //
32 // //
33 //////////////////////////////////////////////////////////////////////////
34 
35 #include "TString.h"
36 
37 #include "TMVA/TActivation.h"
38 
39 namespace TMVA {
40 
41  class TActivationTanh : public TActivation {
42 
43  public:
44 
45  TActivationTanh() {}
46  ~TActivationTanh() {}
47 
48  // evaluate the activation function
49  Double_t Eval(Double_t arg);
50 
51  // evaluate the derivative of the activation function
52  Double_t EvalDerivative(Double_t arg);
53 
54  // minimum of the range of the activation function
55  Double_t GetMin() { return -1; }
56 
57  // maximum of the range of the activation function
58  Double_t GetMax() { return 1; }
59 
60  // expression for the activation function
61  TString GetExpression();
62 
63  // writer of function code
64  virtual void MakeFunction(std::ostream& fout, const TString& fncName);
65 
66  void SetSlow(){fFAST=kFALSE;} // to ensure old training files will be process with old tanh code
67  private:
68  // fast tanh approximation
69  Double_t fast_tanh(Double_t arg);
70  Bool_t fFAST;
71 
72  ClassDef(TActivationTanh,0); // Tanh sigmoid activation function for TNeuron
73  };
74 
75 } // namespace TMVA
76 
77 #endif