in gad/src/analytic.rs [400:417]
fn sigmoid(&mut self, v: &Value<D>) -> Value<D> {
let result = self.eval().sigmoid(v.data());
self.make_node(result, vec![v.input()], {
let v = v.clone();
move |graph, store, gradient| {
if let Some(id) = v.id() {
let v = graph.link(&v);
let c = graph.sigmoid(&v);
let d = graph.neg(&c);
let d = graph.addc(&d, 1);
let k = graph.mul(&c, &d)?;
let grad = graph.mul(&gradient, &k)?;
store.add_gradient(graph, id, &grad)?;
}
Ok(())
}
})
}