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 }) +}