NeuralNet 1.0
Loading...
Searching...
No Matches
Softmax.hpp
1#pragma once
2
3#include <cmath>
4
5#include "Activation.hpp"
6
7namespace NeuralNet {
8class Softmax : public Activation {
9 public:
10 static Eigen::MatrixXd activate(const Eigen::MatrixXd &z) {
11 Eigen::MatrixXd exp = z.array().exp();
12
13 Eigen::MatrixXd sumExp = exp.rowwise().sum().replicate(1, exp.cols());
14
15 return exp.array() / sumExp.array();
16 };
17
18 static Eigen::MatrixXd diff(const Eigen::MatrixXd &a) {
19 return Eigen::MatrixXd::Constant(a.rows(), a.cols(), 1);
20 };
21
22 static inline std::string slug = "smax";
23
24 private:
25 static Eigen::MatrixXd scale(const Eigen::MatrixXd &z, double scaleFactor) {
26 return z * scaleFactor;
27 }
28};
29} // namespace NeuralNet
Definition Activation.hpp:6
Definition Softmax.hpp:8