From dbbf5f96170466e91bcd43b2ea22d72524a9b0b4 Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Sun, 6 Jul 2025 17:40:41 +0100 Subject: [PATCH] Add activation functions: sigmoid, dsigmoid, relu, and drelu --- src/compute/activations.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/compute/activations.rs diff --git a/src/compute/activations.rs b/src/compute/activations.rs new file mode 100644 index 0000000..80b9928 --- /dev/null +++ b/src/compute/activations.rs @@ -0,0 +1,18 @@ +use crate::matrix::{Matrix, SeriesOps}; + +pub fn sigmoid(x: &Matrix) -> Matrix { + x.map(|v| 1.0 / (1.0 + (-v).exp())) +} + +pub fn dsigmoid(y: &Matrix) -> Matrix { + // derivative w.r.t. pre-activation; takes y = sigmoid(x) + y.map(|v| v * (1.0 - v)) +} + +pub fn relu(x: &Matrix) -> Matrix { + x.map(|v| if v > 0.0 { v } else { 0.0 }) +} + +pub fn drelu(x: &Matrix) -> Matrix { + x.map(|v| if v > 0.0 { 1.0 } else { 0.0 }) +}