# Flux.jl changes in api

**URL:** <https://discourse.julialang.org/t/flux-jl-changes-in-api/96263>\
**Category:** General Usage\
**Created:** [March 17, 2023, 10:17pm UTC](https://discourse.julialang.org/t/flux-jl-changes-in-api/96263 "2023-03-17T22:17:26Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [March 17, 2023, 10:17pm UTC](https://discourse.julialang.org/t/flux-jl-changes-in-api/96263/1 "2023-03-17T22:17:26Z")

</div>

Hello, good evening.

I had an example of xor problem solving in Flux.jl, and recently I noticed that it is not working anymore because of library updates. I tryed to migrate the example but the loss is not converging towards zero. What I missed?

```julia
  model = Chain(
        Dense(2 => 2),
        Dense(2 => 1)
    );
    
    # check model input
    display(Flux.params(model)[1]);
    # check model hidden layer
    display(Flux.params(model)[2]);
    # check model output
    display(Flux.params(model)[3]);
    
    # train dat;
    intrain = [0 0 1 1; 0 1 0 1];
    outtrain = [0 1 1 0];
    
    lossfunc(model, a, b) = mean(abs2.(model(a) .- b));
    
    opt = Descent(0.001);
    
    N = 5000;
    loss = zeros(N);
    
    traindata = [(intrain, outtrain)];
    
    for i in 1:N
        Flux.train!(lossfunc, model, traindata, opt);
    end
    
    println(model(intrain))
    lossfunc(model, intrain, outtrain)

```

```julia
2×2 Matrix{Float32}:
 -0.088474 1.18821
 -0.241477 0.356282
2-element Vector{Float32}:
 0.0
 0.0
1×2 Matrix{Float32}:
 0.80949 1.37516
Float32[0.49538296 0.49988925 0.4987973 0.5033036]
0.25000843f0

```

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [March 17, 2023, 10:35pm UTC](https://discourse.julialang.org/t/flux-jl-changes-in-api/96263/2 "2023-03-17T22:35:11Z")

</div>

the apis is really very different now 😐 All I had learned I lost 😅

 ![image](https://global.discourse-cdn.com/julialang/original/3X/e/f/efd91ab389f3583327dc45947f63d6613a9c4c2b.png)

---

<div class="post-metadata">

**Author:** ![jcbritobr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jcbritobr/32/219275_2.png) [@jcbritobr](https://discourse.julialang.org/u/jcbritobr)\
**Post date:** [March 17, 2023, 10:47pm UTC](https://discourse.julialang.org/t/flux-jl-changes-in-api/96263/3 "2023-03-17T22:47:26Z")

</div>

Solved here. Was missing activation function. I was thinking the Dense constructor used sigmoid by default. This solved the issue

```julia
    model = Chain(
        Dense(2 => 2, sigmoid),
        Dense(2 => 1, sigmoid)
    );

```
