# Reddit discussion: limitations of Zygote

**URL:** <https://discourse.julialang.org/t/reddit-discussion-limitations-of-zygote/36982>\
**Category:** Machine Learning\
**Created:** [April 3, 2020, 8:32pm UTC](https://discourse.julialang.org/t/reddit-discussion-limitations-of-zygote/36982 "2020-04-03T20:32:19Z")\
**Posts on this page:** 1\
**Showing post:** 15

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [April 6, 2020, 5:47am UTC](https://discourse.julialang.org/t/reddit-discussion-limitations-of-zygote/36982/15 "2020-04-06T05:47:49Z")

</div>

> [@jaynick](#):
>
> This is my question: **what are** these restrictions on how we need to program?  
> I think they are not described in the docs anywhere?

To a certain extent it is, eg [the introduction](https://fluxml.ai/Zygote.jl/dev/#Taking-Gradients-1) mentions that arrays should not be mutated but it is WIP.

I think it is best to understand that it is _work in progress_: don’t use it unless you are OK with encountering limitations (not necessarily documented), corner cases, issues, making an MWE, reporting an issue, and an occasional PR; and of course defining your own adjoints when necessary. As @baggepinnen, the issue tracker is very useful.

If you are not so adventurous, at the moment I would recommend Tracker, or even ReverseDiff or ForwardDiff, depending on your use case.

---

_[View the full topic](https://discourse.julialang.org/t/reddit-discussion-limitations-of-zygote/36982)._
