Hi guys!

I am trying to use Flux.jl to build a PIDNN as shown here: https://molefrog.github.io/pidnn-talk/

I started to code using only the proportional part. This, I need an input layer with 2 inputs and 1 output, and one output layer with 1 input and 1 output. This is my code so far:

```
struct Input
W
end
Input() = Input(param(randn(2)))
(m::Input)(x) = m.W[1]*x[1] + m.W[2]*x[2]
struct P
W
end
P() = P(param(randn()))
function (m::P)(x)
# P
if (x > 1)
return m.W[1]
elseif (x < -1)
return -m.W[1]
else
return x*m.W[1]
end
end
m = Chain(Input(), P())
function loss(x,y)
# Simulate the system.
t = 0:0.1:100
o = x
Δ = 0.0
for k in t
Δ = Δ + (y-o)^2
r = m([y;o])
o = o + r*0.1
end
return Δ/length(t)
end
ps = Flux.params(m)
Tracker.gradient(()->loss(0,1), ps)
```

Which produces the following error:

```
julia> Tracker.gradient(()->loss(0,1), ps)
ERROR: MethodError: Cannot `convert` an object of type Array{Float64,1} to an object of type Float64
```

Can anyone please help me?

Btw, if the input layer only have one input, then it works fine.