# Pytorch's Identity() implementation/alternative in Fluxml?

**URL:** <https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810>\
**Category:** Machine Learning\
**Created:** [August 22, 2021, 4:35pm UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810 "2021-08-22T16:35:05Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [August 22, 2021, 4:35pm UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/1 "2021-08-22T16:35:05Z")

</div>

description: A placeholder identity operator that is argument-insensitive.  
example pseudocode:

```julia
self.layer = nn.Sequential(
nn.Dropout(0.5) if dropout else nn.Identity(),
)
```

---

<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:** [August 22, 2021, 10:13pm UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/2 "2021-08-22T22:13:54Z")

</div>

`identity`

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [August 23, 2021, 7:57am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/3 "2021-08-23T07:57:22Z")

</div>

thanks

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [August 23, 2021, 8:06am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/4 "2021-08-23T08:06:08Z")

</div>

btw where did you find the identity ? i have searched in Zygote and Flux docs, no results found…

---

<div class="post-metadata">

**Author:** ![Sukera](https://avatars.discourse-cdn.com/v4/letter/s/ce7236/32.png) [@Sukera](https://discourse.julialang.org/u/Sukera)\
**Post date:** [August 23, 2021, 8:08am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/5 "2021-08-23T08:08:20Z")

</div>

If my intuition is right, this is just the regular julia function `identity`. Flux and Zygote compose with all julia functions you want to put in, as far as I know. This should also extend to arbitrary packages and user code, it’s one of the strengths of having a full julia stack for this.

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [August 23, 2021, 8:19am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/6 "2021-08-23T08:19:25Z")

</div>

okey, i will check it, because i want replicate Pytorch’s Indentity function

---

<div class="post-metadata">

**Author:** ![Tomas\_Pevny](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tomas_pevny/32/25466_2.png) [@Tomas\_Pevny](https://discourse.julialang.org/u/Tomas_Pevny)\
**Post date:** [August 23, 2021, 8:30am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/7 "2021-08-23T08:30:59Z")

</div>

How is Pytorch’s `identity` different from just `identity` function defined as `f(x) = x` ?

---

<div class="post-metadata">

**Author:** ![extremety1989](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/extremety1989/32/28184_2.png) [@extremety1989](https://discourse.julialang.org/u/extremety1989)\
**Post date:** [August 23, 2021, 8:40am UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/8 "2021-08-23T08:40:00Z")

</div>

i have not checked Julia’s indentity

---

<div class="post-metadata">

**Author:** ![ToucheSir](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/touchesir/32/14411_2.png) [@ToucheSir](https://discourse.julialang.org/u/ToucheSir)\
**Post date:** [August 23, 2021, 4:17pm UTC](https://discourse.julialang.org/t/pytorchs-identity-implementation-alternative-in-fluxml/66810/9 "2021-08-23T16:17:32Z")

</div>

There is no difference between using `nn.Identity` in PyTorch and `identity` in Flux. The whole point of a Julia native ML library is that you don’t need to subclass `nn.Module` for everything. Want to use some arbitrary function in a `Chain`? Just pass it in, no need to wrap in a layer class. Because of this, there is no reason for us to reinvent the wheel and define an `Identity` layer when Julia already has a perfectly good `identity` function.
