Skip to content

Commit

Permalink
Merge pull request arogozhnikov#143 from arogozhnikov/docs-improvements
Browse files Browse the repository at this point in the history
Docs improvements: wording, visual style, EinMix
  • Loading branch information
arogozhnikov authored Sep 21, 2021
2 parents 6b7a004 + febe51d commit 66f29c8
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 13 deletions.
3 changes: 2 additions & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

- Part 1 notebook at [nbviewer](https://nbviewer.jupyter.org/github/arogozhnikov/einops/blob/master/docs/1-einops-basics.ipynb)
- Part 2 notebook at [nbviewer](https://nbviewer.jupyter.org/github/arogozhnikov/einops/blob/master/docs/2-einops-for-deep-learning.ipynb)
- Part 3, writing better code with einops and pytorch: [web link](https://arogozhnikov.github.io/einops/pytorch-examples.html)
- Part 3: EinMix for great MLPs at [nbviewer](https://nbviewer.jupyter.org/github/arogozhnikov/einops/blob/master/docs/3-einmix-layer.ipynb)
- Writing better code with einops and pytorch: [web link](https://arogozhnikov.github.io/einops/pytorch-examples.html)

7 changes: 6 additions & 1 deletion docs/css/mkdocs.css
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,9 @@ div.highlight{

div.highlight>pre{
padding: 3px;
}
}

.md-typeset ul li, .md-typeset ol li {
/*original padding makes lists huge*/
margin-bottom: 0.2em;
}
21 changes: 12 additions & 9 deletions docs/pages/projects.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ but it can also help to see einops in action.

Here are some open-source projects that can teach how to leverage einops for your problems

- [lambda networks](https://www.youtube.com/watch?v=3qxJ2WD8p4w) (non-conventional architecture) implementation by [@lucidrains](https://github.com/lucidrains)
- nice demonstration how clearer code can be with einops, even compared to verbal description
- <https://github.com/lucidrains/lambda-networks>
- lambda networks (non-conventional architecture) implemented by [@lucidrains](https://github.com/lucidrains)
- nice demonstration how clearer code can be with einops, even compared to description in the paper
- [implementation](https://github.com/lucidrains/lambda-networks) and [video](https://www.youtube.com/watch?v=3qxJ2WD8p4w)


- capsule networks (aka capsnets) [implemented in einops](https://github.com/arogozhnikov/readable_capsnet)
- blazingly fast, concise, and 3x-more memory efficient capsule networks, written with einops


- @lucidrains has a dramatic [collection of vision transformers](https://github.com/lucidrains/vit-pytorch)
- there is a plenty of good examples how to use einops efficiently
- there is a plenty of good examples how to use einops efficiently in your projects


- [NuX](https://github.com/Information-Fusion-Lab-Umass/NuX) - normalizing flows in Jax
- [NuX](https://github.com/Information-Fusion-Lab-Umass/NuX) normalizing flows in Jax
- different rearrangement patterns in normalizing flows have nice mapping to einops


Expand All @@ -29,15 +29,18 @@ Here are some open-source projects that can teach how to leverage einops for you
- For protein folding, see [implementation](https://github.com/lucidrains/invariant-point-attention)
of invariant point attention from alphafold 2

## Non-official tutorials about einops
## Community introductions to einops

Tutorial in the AI summer about einops and einsum:
<https://theaisummer.com/einsum-attention/>

Implementing visual transformer in pytorch:
<https://towardsdatascience.com/implementing-visualttransformer-in-pytorch-184f9f16f632>

ML TLDR twitter thread on einops:
Refactoring machine learning code, one of posts in a series is devoted to einops:
<https://www.paepper.com/blog/posts/refactoring-machine-learning-code-einops/>

ML TLDR thread on einops:
<https://twitter.com/mlsummaries/status/1400505282543955970>

Book "Deep Reinforcement Learning in Action" by Brandon Brown & Alexander Zai
Expand Down Expand Up @@ -71,5 +74,5 @@ contains an introduction into einops in chapter 10.
## Related projects:

- [numpy.einsum](https://numpy.org/doc/stable/reference/generated/numpy.einsum.html) &mdash; grand-dad of einops, this operation is now available in all modern DL frameworks
- einops in rust language <https://docs.rs/einops/0.1.0/einops>
- tensorcast in Julia language <https://juliahub.com/ui/Packages/TensorCast>
- einops in Rust language <https://docs.rs/einops/0.1.0/einops>
- tensorcast in Julia language <https://juliahub.com/ui/Packages/TensorCast>
7 changes: 5 additions & 2 deletions docs/pages/testimonials.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,19 @@
<style>
.md-typeset blockquote {
background-color: rgba(63,127,127,0.29);
background-color: rgba(128, 128, 128, 0.04);
border-color: #002ee380;
color: #333;
margin-top: 2.5em;
margin-bottom: -0.5em;
margin-right: 3em;
color: #333;
padding-right: 2em;
}
blockquote + p {
text-align: right;
padding-right: 5em;
}
</style>

Einops was created three years ago, and never hit big ML news.
However, little by little and step by step it sneaked into every major AI lab.

Expand Down
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ nav:
- Tutorials:
Einops Basics: 1-einops-basics.ipynb
Einops for Deep Learning: 2-einops-for-deep-learning.ipynb
Einmix for great MLPs: 3-einmix-layer.ipynb
Pytorch Examples: pytorch-examples.html
- API Reference:
asnumpy: api/asnumpy.md
Expand Down

0 comments on commit 66f29c8

Please sign in to comment.