FlexNN 1
Fully connected neural network built from scratch with flexible n-layer design and multiple activations.
Loading...
Searching...
No Matches
ReLU.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <algorithm> // std::max
9#include <Eigen/Dense>
10
12
16inline Eigen::MatrixXd relu_forward(const Eigen::MatrixXd& Z) {
17 return Z.unaryExpr([](double x) { return std::max(0.0, x); });
18}
19
27inline Eigen::MatrixXd relu_backward(const Eigen::MatrixXd& dA,
28 const Eigen::MatrixXd& Z,
29 const Eigen::MatrixXd& /*A*/) noexcept {
30 return dA.array() * (Z.array() > 0.0).cast<double>();
31}
32
33} // namespace FlexNN::Activations::detail
Definition Activation.hpp:81
Eigen::MatrixXd relu_backward(const Eigen::MatrixXd &dA, const Eigen::MatrixXd &Z, const Eigen::MatrixXd &) noexcept
ReLU backward: dZ = dA * (Z > 0).
Definition ReLU.hpp:27
Eigen::MatrixXd relu_forward(const Eigen::MatrixXd &Z)
ReLU forward: A = max(0, Z) elementwise.
Definition ReLU.hpp:16