tinyopt 700
Tinyopt, a lightweight, header only optimization library
Loading...
Searching...
No Matches
activations.h
1// Copyright 2026 Julien Michot.
2// SPDX-License-Identifier: Apache-2.0
3
4#pragma once
5
6#include <tinyopt/losses/helpers.h>
7
8namespace tinyopt::losses {
9
16 Sigmoid, 1.0 / (1.0 + exp(-x)),
17 l.unaryExpr([](auto x) -> Scalar { return x * (Scalar(1.0) - x); }).reshaped().asDiagonal());
18
21 Tanh, (exp(x) - exp(-x)) / (exp(x) + exp(-x)),
22 l.unaryExpr([](auto x) -> Scalar { return Scalar(1.0) - x * x; }).reshaped().asDiagonal());
23
26 ReLU, x > 0 ? x : Scalar(0.0),
27 x.unaryExpr([](auto x) { return x > 0 ? Scalar(1.0) : Scalar(0.0); }).reshaped().asDiagonal());
28
30DefineLoss2(LeakyReLU, x > 0 ? x : a * x,
31 x.unaryExpr([a](auto x) { return x > 0 ? 1 : a; }).reshaped().asDiagonal());
32
34} // namespace tinyopt::losses
Definition activations.h:8
DefineLoss2(LeakyReLU, x > 0 ? x :a *x, x.unaryExpr([a](auto x) { return x > 0 ? 1 :a;}).reshaped().asDiagonal())
LeakyReLU = {x>0:x, x<=0:a*x}, derivative = {x>0:1, x<=0:a}.
DefineLoss(Sigmoid, 1.0/(1.0+exp(-x)), l.unaryExpr([](auto x) -> Scalar { return x *(Scalar(1.0) - x);}).reshaped().asDiagonal())
Sigmoid = 1/(1+e^-x), derivative = Sigmoid(x) * (1 - Sigmoid(x)).