From de89962044ee0c39bc7f5761edfe9e140ec4a65e Mon Sep 17 00:00:00 2001 From: bertholeo Date: Mon, 12 Oct 2026 15:31:44 -0300 Subject: [PATCH] Create sinusoidal.py Sinusoidal activation function. Reference: https://arxiv.org/abs/2006.09661 --- .../activation_functions/sinusoidal.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 neural_network/activation_functions/sinusoidal.py diff --git a/neural_network/activation_functions/sinusoidal.py b/neural_network/activation_functions/sinusoidal.py new file mode 100644 index 000000000000..830777be82f8 --- /dev/null +++ b/neural_network/activation_functions/sinusoidal.py @@ -0,0 +1,35 @@ +""" +Sinusoidal activation function. + +Reference: +https://arxiv.org/abs/2006.09661 +""" + +import numpy as np + + +def sinusoidal(vector: np.ndarray, omega: float = 1.0) -> np.ndarray: + """ + Apply the sinusoidal activation element-wise. + + Formula: f(x) = sin(omega * x) + + >>> sinusoidal(np.array([0, np.pi / 2, np.pi])).round(5) + array([0., 1., 0.]) + + >>> sinusoidal(np.array([0, np.pi / 4]), omega=2).round(5) + array([0., 1.]) + + >>> sinusoidal(np.array([])).size + 0 + + >>> sinusoidal(np.array([[0, 1], [2, 3]])).shape + (2, 2) + """ + return np.sin(omega * vector) + + +if __name__ == "__main__": + import doctest + + doctest.testmod()