# Gradient of Neural Network wrapper can't be taken

**URL:** <https://discourse.julialang.org/t/gradient-of-neural-network-wrapper-cant-be-taken/53061>\
**Category:** New to Julia\
**Tags:** differentiation\
**Created:** [January 8, 2021, 8:12pm UTC](https://discourse.julialang.org/t/gradient-of-neural-network-wrapper-cant-be-taken/53061 "2021-01-08T20:12:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sunny](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@Sunny](https://discourse.julialang.org/u/Sunny)\
**Post date:** [January 8, 2021, 8:12pm UTC](https://discourse.julialang.org/t/gradient-of-neural-network-wrapper-cant-be-taken/53061/1 "2021-01-08T20:12:34Z")

</div>

I use the following wrapper for neural network

```julia
nn = Chain(Dense(2, 64, relu), Dense(64, 1))
function wrapper_nn(state)
    q, q_t = state
    dfdx(x,x_t) = ForwardDiff.derivative(x -> nn([x, x_t]), x)
    #qtt = nn([q, q_t]) # works
    qtt = dfdx(q, q_t) # the other important factor are omitted for simplicity
end

```

Then I take a gradient of the loss function of that function

```julia
data = [1,2]
target = [1]
loss(data, target) = Flux.mean((wrapper_nn(data) .- target) .^ 2)
grads = Zygote.gradient(() -> loss(data, target), params(nn))

```

And the following error appears

```julia
MethodError: no method matching *(::NamedTuple{(:value, :partials),Tuple{Nothing,Array{Float64,1}}}, ::ForwardDiff.Dual{ForwardDiff.Tag{var"#215#220"{Float32},Float32},Float32,1})

```

What does it mean? I don’t even have `*` operator in the explicit form
