OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Extreme.h
Go to the documentation of this file.
1 #ifndef OPENANN_LAYERS_EXTREME_H_
2 #define OPENANN_LAYERS_EXTREME_H_
3 
4 #include <OpenANN/layers/Layer.h>
6 
7 namespace OpenANN
8 {
9 
27 class Extreme : public Layer
28 {
29  int I, J;
30  bool bias;
32  double stdDev;
33  Eigen::MatrixXd W;
34  Eigen::MatrixXd* x;
35  Eigen::MatrixXd a;
36  Eigen::MatrixXd y;
37  Eigen::MatrixXd yd;
38  Eigen::MatrixXd deltas;
39  Eigen::MatrixXd e;
40 
41 public:
42  Extreme(OutputInfo info, int J, bool bias, ActivationFunction act,
43  double stdDev);
44  virtual OutputInfo initialize(std::vector<double*>& parameterPointers,
45  std::vector<double*>& parameterDerivativePointers);
46  virtual void initializeParameters();
47  virtual void updatedParameters() {}
48  virtual void forwardPropagate(Eigen::MatrixXd* x, Eigen::MatrixXd*& y,
49  bool dropout, double* error = 0);
50  virtual void backpropagate(Eigen::MatrixXd* ein, Eigen::MatrixXd*& eout,
51  bool backpropToPrevious);
52  virtual Eigen::MatrixXd& getOutput();
53  virtual Eigen::VectorXd getParameters();
54 };
55 
56 } // namespace OpenANN
57 
58 #endif // OPENANN_LAYERS_EXTREME_H_