# Where is my mistake in converting this python code into Julia

**URL:** <https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616>\
**Category:** New to Julia\
**Created:** [October 7, 2019, 7:13pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616 "2019-10-07T19:13:13Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 7, 2019, 7:13pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/1 "2019-10-07T19:13:14Z")

</div>

I’m trying to convert the python code(left) into Julia (right), python code is working fine, but Julia code gave an error at the highlighted line `l1_delta = ...`:

```bash
DimensionMismatch("A has dimensions (4,1) but B has dimensions (4,1)")

```

 ![10%20PM](https://global.discourse-cdn.com/julialang/original/3X/1/1/1167071b46fa6926466ce4638f05fc7112d45c52.png)

Julia full code is here:

```julia
# sigmoid function
sigmoid(x::Real, derive::Bool=false) = 
(derive==true) ? x*(one(x)-x) : one(x)/(one(x) + exp(-x))

x = [0 0 1; 0 1 1; 1 0 1; 1 1 1]

y = [0 0 1 1]'

syn0 = 2 * rand(3,1)

for iter in (:)(1,10000)
    l0 = x
    l1 = sigmoid.(l0 * syn0)
    l1_error = y - l1
    l1_delta = l1_error * sigmoid.(l1,true) # here I get the error
    syn0 += l0' * l1_delta
end

println("Output After Training:")
l1

```

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [October 7, 2019, 7:15pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/2 "2019-10-07T19:15:34Z")

</div>

> [@hasanOryx](#):
>
> syn0 = 2 \* rand(3,1)

syn0 = 2 \* rand(3,1) - 1?

---

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 7, 2019, 7:17pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/3 "2019-10-07T19:17:50Z")

</div>

> [@ChrisRackauckas](#):
>
> syn0 = 2 \* rand(3,1) - 1?

Thanks for your feedback, the error is in

```julia
l1_delta = l1_error * sigmoid.(l1,true)

```

Regarding your comment, see the below

 ![29%20PM](https://global.discourse-cdn.com/julialang/original/3X/f/b/fb9516706ce6905f35ffba8718b196c938471804.png)

---

<div class="post-metadata">

**Author:** ![Noel\_Araujo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/noel_araujo/32/4862_2.png) [@Noel\_Araujo](https://discourse.julialang.org/u/Noel_Araujo)\
**Post date:** [October 7, 2019, 7:29pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/4 "2019-10-07T19:29:52Z")

</div>

You are missing a point in the subtraction:

`syn0 = 2 * rand(3,1) .- 1`

---

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 7, 2019, 7:32pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/5 "2019-10-07T19:32:36Z")

</div>

Thanks, but I still getting error at:

```julia
l1_delta = l1_error * sigmoid.(l1,true)

```

---

<div class="post-metadata">

**Author:** ![Noel\_Araujo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/noel_araujo/32/4862_2.png) [@Noel\_Araujo](https://discourse.julialang.org/u/Noel_Araujo)\
**Post date:** [October 7, 2019, 7:33pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/6 "2019-10-07T19:33:58Z")

</div>

Now that I noticed the comment of the error.  
The same broadcast (dot) solution:  
`l1_delta = l1_error .* sigmoid.(l1,true) # here I get the error`

---

<div class="post-metadata">

**Author:** ![dmolina](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dmolina/32/5246_2.png) [@dmolina](https://discourse.julialang.org/u/dmolina)\
**Post date:** [October 7, 2019, 7:35pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/7 "2019-10-07T19:35:01Z")

</div>

> [@hasanOryx](#):
>
> l1\_delta = l1\_error \* sigmoid.(l1,true) # here I get the error

The problem, in my opinion, is that you are doing a matrix multiplication, and in that case, both matrixes cannot have the same dimension.

Or you use the transpose of one of them or you use

```julia
l1_delta = l1_error .* sigmoid.(l1,true) # Multiply element by element

```

---

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 7, 2019, 7:38pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/8 "2019-10-07T19:38:08Z")

</div>

Thanks,  
So the python code:

```python
l1_delta = l1_error * sigmoid(l1,True)

```

Is not a matrix multiplication, and different from the python code using `np` which is generating the same error got by Julia:

```python
l1_delta = np.dot(l1_error,sigmoid(l1,True))

```

Now the code is correct, thanks

---

<div class="post-metadata">

**Author:** ![hasanOryx](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hasanoryx/32/5373_2.png) [@hasanOryx](https://discourse.julialang.org/u/hasanOryx)\
**Post date:** [October 7, 2019, 7:39pm UTC](https://discourse.julialang.org/t/where-is-my-mistake-in-converting-this-python-code-into-julia/29616/9 "2019-10-07T19:39:40Z")

</div>

> [@dmolina](#):
>
> Or you use the transpose of one of them or you use

Transpose can not work here as it will generate array in different dimensions, but the `.*` worked fine, thanks
