diff --git a/include/Activation/Activation.hpp b/include/Activation/Activation.hpp new file mode 100644 index 0000000..e51f6f7 --- /dev/null +++ b/include/Activation/Activation.hpp @@ -0,0 +1,16 @@ +#include +#include +#include + +class Activation : public Layer { +public: + Activation(std::function activation, + std::function activation_prime); + + void forward(const Eigen::VectorXd& input) override; + void backward(const Eigen::VectorXd& output_gradient, double learning_rate) override; + +private: + std::function activation; + std::function activation_prime; +}; diff --git a/include/Layers/Layers.hpp b/include/Layers/Layers.hpp new file mode 100644 index 0000000..a5f1239 --- /dev/null +++ b/include/Layers/Layers.hpp @@ -0,0 +1,22 @@ +#ifndef LAYERS_HPP +#define LAYERS_HPP + +#include + +class Layer { +public: + Layer(); + + virtual void forward(const Eigen::VectorXd& input_data); + virtual void backward(const Eigen::VectorXd& output_gradient, double learning_rate); + + const Eigen::VectorXd& getOutput() const; + const Eigen::VectorXd& getInputGradient() const; + +protected: + Eigen::VectorXd input; + Eigen::VectorXd output; + Eigen::VectorXd input_gradient; +}; + +#endif // LAYERS_HPP diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1c1e37d..4cc2614 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,6 +9,8 @@ set(CMAKE_CXX_STANDARD 11) include_directories(include) include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${CMAKE_SOURCE_DIR}/Eigen) +include_directories(${CMAKE_SOURCE_DIR}/include/Activation) +include_directories(${CMAKE_SOURCE_DIR}/include/Layers) # Add source files to the project file(GLOB_RECURSE SOURCES "src/*.cpp")