 # Sigmoid function

Hello,
I have difficulty with getting the derivate (Gradient ) of sigmoid!
using Flux
sigmoid(x)=1 ./(1 .+exp(.-x))
sigmoid(x)=s
d(s)=x .* (1 .- x)
d([1 2 3])
it causes error or not outputting correct number!
I would appreciate if you guys can help me,
thank you

``````sigmoid(x)=1 ./(1 .+exp(.-x))
sigmoid(x)=s
``````

The second line is replacing the first definition.

1 Like

Also in the function above, `x` is not defined, `s` should be `x`.

I erased it, but its still causing error !

I changed s to x but the output is still the same !

Now the code is :
Using Flux
Sigmoid(x)= 1 ./(1 .+exp(.-x))
d(x)=x .* (1 .- x)
d([1 2 3])
Wrong output!

``````julia> using ForwardDiff

julia> sigmoid(x)= @. 1 / (1 + exp(-x))
sigmoid (generic function with 1 method)

julia> d(x) = @. x * (1 - x)
d (generic function with 1 method)

julia> dsigmoid(x) = d(sigmoid(x))
dsigmoid (generic function with 1 method)

julia> ForwardDiff.derivative(sigmoid, 0.57)
0.23074478122261177

julia> dsigmoid(0.57)
0.23074478122261183
``````

Note that I think it’s better not to add dots in the definitions of `sigmoid` and `d`, but to instead add them them where you’re calling them. But I have very little experience with Flux, so maybe things are different there.

I tried the following

``````using Flux
x = [-2:2...]
## Defining sigmoid function
Sigmoid(x) = 1 / (1 + exp(-x))
Sigmoid.(x)
Also `sigmoid` is already exported by `Flux`:
``````using Flux