Repository: lf1-io/padl (language: python)

Issue:
Add notebooks to Google Colab
## 🛰️ Feature

## Description
<!-- A clear and concise description of what the problem is. Ex: I'm always frustrated when -->
Add jupyter notebooks in `notebooks` to google colab for easy sharing. Create a link to the google colab in the README. 

## Solution
<!-- A clear and concise description of what you want to happen - if possible, pseudocode/code/steps for solution -->
- [x] Add the notebooks to the shared google drive
- [x] set up correct permissions

## Alternative
Use this kind of link https://colab.research.google.com/github/lf1-io/padl/ which can be made into a badge as well
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lf1-io/padl/)
```python
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lf1-io/padl/)
```
to directly prompt users to open our notebooks into their own google colab environment. Explained here: https://github.com/weiji14/deepbedmap/issues/61
- [x] Make sure notebooks can be directly run (including installing all dependencies)
- [ ] Update the pypi artifact to include a version of PADL that supports python 3.7
- [x] Add Colab badge to README



Discussion / hints:
decision: use direct github-colab links instead of drive

Fix patch:
diff --git a/README.md b/README.md
index 52fd324c..50be682e 100644
--- a/README.md
+++ b/README.md
@@ -6,11 +6,11 @@
 [![GitHub Issues](https://img.shields.io/github/issues/lf1-io/padl.svg)](https://github.com/lf1-io/padl/issues)
 [![Tests](https://github.com/lf1-io/padl/actions/workflows/actions.yml/badge.svg)](https://github.com/lf1-io/padl/actions/workflows/actions.yml)
 [![codecov](https://codecov.io/gh/lf1-io/padl/branch/main/graph/badge.svg?token=NLS02IWDFQ)](https://codecov.io/gh/lf1-io/padl)
+[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/lf1-io/padl/)
 [![LF1 on Twitter](https://badgen.net/badge/icon/twitter?icon=twitter&label)](https://twitter.com/lf1_io)
 
-**Pipeline abstractions for deep learning**.
+# Pipeline Abstractions for Deep Learning
 
----
 
 Full documentation here: https://lf1-io.github.io/padl/
 
@@ -24,6 +24,7 @@ Full documentation here: https://lf1-io.github.io/padl/
 
 **PADL** was developed at [LF1](https://lf1.io/), an AI innovation lab based in Berlin, Germany.
 
+
 ## Getting Started
 
 ### Installation
@@ -37,7 +38,7 @@ PADL currently supports python **3.7**, **3.8** and **3.9**.
 Python version >= **3.8** is preferred because creating and loading transforms (**not** execution) 
 can be slower in **3.7**.
 
-**Your first PADL program**
+### Your first PADL program
 
 ```python
 from padl import transform, batch, unbatch
@@ -55,6 +56,10 @@ def post(x):
 
 my_pipeline = prepare >> batch >> nn.Linear(10, 20) >> unbatch >> post
 ```
+### Try out PADL in Colab notebooks
+1. [MNIST](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/01_MNIST_using_padl.ipynb#scrollTo=bd560eb8)
+2. [Simple NLP example](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/02_nlp_example.ipynb)
+3. [Sentiment Analysis - NLP](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/03_Sentiment_Analysis_with_padl.ipynb)
 
 ### Resources
 
@@ -62,12 +67,16 @@ my_pipeline = prepare >> batch >> nn.Linear(10, 20) >> unbatch >> post
 - Find examples at <https://github.com/lf1-io/padl/tree/main/notebooks>.
 - Post issues at <https://github.com/lf1-io/padl/issues>.
 
+
+
 ## Contributing
 
 Code of conduct: https://github.com/lf1-io/padl/blob/main/CODE_OF_CONDUCT.md
 
 If your interested in contributing to PADL please look at the current issues: https://github.com/lf1-io/padl/issues
 
+
+
 ## Licensing
 
 PADL is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.
diff --git a/docs/0.1.6/_sources/README.md.txt b/docs/0.1.6/_sources/README.md.txt
index 2733591e..17a4ba55 100644
--- a/docs/0.1.6/_sources/README.md.txt
+++ b/docs/0.1.6/_sources/README.md.txt
@@ -5,9 +5,9 @@
 
 # Introduction
 
-**Pipeline abstractions for deep learning**
+**Pipeline Abstractions for Deep Learning**
+
 
----
 
 **PADL**:
 
@@ -51,6 +51,11 @@ def post(x):
 my_pipeline = prepare >> batch >> nn.Linear(10, 20) >> unbatch >> post
 ```
 
+### Try out PADL in Colab notebooks
+1. [MNIST](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/01_MNIST_using_padl.ipynb#scrollTo=bd560eb8)
+2. [Simple NLP example](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/02_nlp_example.ipynb)
+3. [Sentiment Analysis - NLP](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/03_Sentiment_Analysis_with_padl.ipynb)
+
 ### Resources
 
 - Go to {ref}`usage` for a concise but comprehensive manual.
diff --git a/docs/0.1.6/apidocs/padl.dumptools.ast_utils.html b/docs/0.1.6/apidocs/padl.dumptools.ast_utils.html
index 0fcbe7b3..557e18b1 100644
--- a/docs/0.1.6/apidocs/padl.dumptools.ast_utils.html
+++ b/docs/0.1.6/apidocs/padl.dumptools.ast_utils.html
@@ -97,6 +97,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/0.1.6/apidocs/padl.dumptools.packagefinder.html b/docs/0.1.6/apidocs/padl.dumptools.packagefinder.html
index 404e8c3c..3e6c4c8b 100644
--- a/docs/0.1.6/apidocs/padl.dumptools.packagefinder.html
+++ b/docs/0.1.6/apidocs/padl.dumptools.packagefinder.html
@@ -97,6 +97,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/0.1.6/apidocs/padl.wrap.html b/docs/0.1.6/apidocs/padl.wrap.html
index 908860a3..1e18c92f 100644
--- a/docs/0.1.6/apidocs/padl.wrap.html
+++ b/docs/0.1.6/apidocs/padl.wrap.html
@@ -96,6 +96,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/src/README.md b/docs/src/README.md
index 2733591e..17a4ba55 100644
--- a/docs/src/README.md
+++ b/docs/src/README.md
@@ -5,9 +5,9 @@
 
 # Introduction
 
-**Pipeline abstractions for deep learning**
+**Pipeline Abstractions for Deep Learning**
+
 
----
 
 **PADL**:
 
@@ -51,6 +51,11 @@ def post(x):
 my_pipeline = prepare >> batch >> nn.Linear(10, 20) >> unbatch >> post
 ```
 
+### Try out PADL in Colab notebooks
+1. [MNIST](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/01_MNIST_using_padl.ipynb#scrollTo=bd560eb8)
+2. [Simple NLP example](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/02_nlp_example.ipynb)
+3. [Sentiment Analysis - NLP](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/03_Sentiment_Analysis_with_padl.ipynb)
+
 ### Resources
 
 - Go to {ref}`usage` for a concise but comprehensive manual.
diff --git a/docs/src/objects.inv b/docs/src/objects.inv
index 54741499..22d1059d 100644
Binary files a/docs/src/objects.inv and b/docs/src/objects.inv differ
diff --git a/docs/unstable/README.html b/docs/unstable/README.html
index 46dd2bb6..2816ce1e 100644
--- a/docs/unstable/README.html
+++ b/docs/unstable/README.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="#resources">Resources</a></li>
 </ul>
 </li>
@@ -174,8 +175,7 @@
              
   <section class="tex2jax_ignore mathjax_ignore" id="introduction">
 <h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline"></a></h1>
-<p><strong>Pipeline abstractions for deep learning</strong></p>
-<hr class="docutils" />
+<p><strong>Pipeline Abstractions for Deep Learning</strong></p>
 <p><strong>PADL</strong>:</p>
 <ul class="simple">
 <li><p>is a pipeline builder for <strong>PyTorch</strong>.</p></li>
@@ -215,6 +215,14 @@ <h3>Your first PADL program<a class="headerlink" href="#your-first-padl-program"
 </pre></div>
 </div>
 </section>
+<section id="try-out-padl-in-colab-notebooks">
+<h3>Try out PADL in Colab notebooks<a class="headerlink" href="#try-out-padl-in-colab-notebooks" title="Permalink to this headline"></a></h3>
+<ol class="simple">
+<li><p><a class="reference external" href="https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/01_MNIST_using_padl.ipynb#scrollTo=bd560eb8">MNIST</a></p></li>
+<li><p><a class="reference external" href="https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/02_nlp_example.ipynb">Simple NLP example</a></p></li>
+<li><p><a class="reference external" href="https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/03_Sentiment_Analysis_with_padl.ipynb">Sentiment Analysis - NLP</a></p></li>
+</ol>
+</section>
 <section id="resources">
 <h3>Resources<a class="headerlink" href="#resources" title="Permalink to this headline"></a></h3>
 <ul class="simple">
diff --git a/docs/unstable/_sources/README.md.txt b/docs/unstable/_sources/README.md.txt
index 2733591e..17a4ba55 100644
--- a/docs/unstable/_sources/README.md.txt
+++ b/docs/unstable/_sources/README.md.txt
@@ -5,9 +5,9 @@
 
 # Introduction
 
-**Pipeline abstractions for deep learning**
+**Pipeline Abstractions for Deep Learning**
+
 
----
 
 **PADL**:
 
@@ -51,6 +51,11 @@ def post(x):
 my_pipeline = prepare >> batch >> nn.Linear(10, 20) >> unbatch >> post
 ```
 
+### Try out PADL in Colab notebooks
+1. [MNIST](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/01_MNIST_using_padl.ipynb#scrollTo=bd560eb8)
+2. [Simple NLP example](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/02_nlp_example.ipynb)
+3. [Sentiment Analysis - NLP](https://colab.research.google.com/github/lf1-io/padl/blob/main/notebooks/03_Sentiment_Analysis_with_padl.ipynb)
+
 ### Resources
 
 - Go to {ref}`usage` for a concise but comprehensive manual.
diff --git a/docs/unstable/advanced.html b/docs/unstable/advanced.html
index c0e91e59..e0269bdb 100644
--- a/docs/unstable/advanced.html
+++ b/docs/unstable/advanced.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/advanced/saving.html b/docs/unstable/advanced/saving.html
index 6a778da1..9f8f40a7 100644
--- a/docs/unstable/advanced/saving.html
+++ b/docs/unstable/advanced/saving.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.ast_utils.html b/docs/unstable/apidocs/padl.dumptools.ast_utils.html
index c8b53ebb..285d63d7 100644
--- a/docs/unstable/apidocs/padl.dumptools.ast_utils.html
+++ b/docs/unstable/apidocs/padl.dumptools.ast_utils.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.html b/docs/unstable/apidocs/padl.dumptools.html
index aa3cbfa7..1ac037a4 100644
--- a/docs/unstable/apidocs/padl.dumptools.html
+++ b/docs/unstable/apidocs/padl.dumptools.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.inspector.html b/docs/unstable/apidocs/padl.dumptools.inspector.html
index a3acb095..c9e70446 100644
--- a/docs/unstable/apidocs/padl.dumptools.inspector.html
+++ b/docs/unstable/apidocs/padl.dumptools.inspector.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.packagefinder.html b/docs/unstable/apidocs/padl.dumptools.packagefinder.html
index 257070dd..d719f11c 100644
--- a/docs/unstable/apidocs/padl.dumptools.packagefinder.html
+++ b/docs/unstable/apidocs/padl.dumptools.packagefinder.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.serialize.html b/docs/unstable/apidocs/padl.dumptools.serialize.html
index 1723984f..ee1698e1 100644
--- a/docs/unstable/apidocs/padl.dumptools.serialize.html
+++ b/docs/unstable/apidocs/padl.dumptools.serialize.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.sourceget.html b/docs/unstable/apidocs/padl.dumptools.sourceget.html
index 48ba3fd0..afd9180b 100644
--- a/docs/unstable/apidocs/padl.dumptools.sourceget.html
+++ b/docs/unstable/apidocs/padl.dumptools.sourceget.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.symfinder.html b/docs/unstable/apidocs/padl.dumptools.symfinder.html
index c2ae11bb..39a62136 100644
--- a/docs/unstable/apidocs/padl.dumptools.symfinder.html
+++ b/docs/unstable/apidocs/padl.dumptools.symfinder.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.dumptools.var2mod.html b/docs/unstable/apidocs/padl.dumptools.var2mod.html
index 03e1d8ae..56683d75 100644
--- a/docs/unstable/apidocs/padl.dumptools.var2mod.html
+++ b/docs/unstable/apidocs/padl.dumptools.var2mod.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.exceptions.html b/docs/unstable/apidocs/padl.exceptions.html
index 4021cd04..2b1bde59 100644
--- a/docs/unstable/apidocs/padl.exceptions.html
+++ b/docs/unstable/apidocs/padl.exceptions.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.html b/docs/unstable/apidocs/padl.html
index 82915de2..9c5c2827 100644
--- a/docs/unstable/apidocs/padl.html
+++ b/docs/unstable/apidocs/padl.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.print_utils.html b/docs/unstable/apidocs/padl.print_utils.html
index 1e1aec37..b3daee30 100644
--- a/docs/unstable/apidocs/padl.print_utils.html
+++ b/docs/unstable/apidocs/padl.print_utils.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.transforms.html b/docs/unstable/apidocs/padl.transforms.html
index 5e295c9f..7fb7827b 100644
--- a/docs/unstable/apidocs/padl.transforms.html
+++ b/docs/unstable/apidocs/padl.transforms.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.util_transforms.html b/docs/unstable/apidocs/padl.util_transforms.html
index b985f626..b1d4f0b3 100644
--- a/docs/unstable/apidocs/padl.util_transforms.html
+++ b/docs/unstable/apidocs/padl.util_transforms.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.utils.html b/docs/unstable/apidocs/padl.utils.html
index 592eab29..6f18093a 100644
--- a/docs/unstable/apidocs/padl.utils.html
+++ b/docs/unstable/apidocs/padl.utils.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.version.html b/docs/unstable/apidocs/padl.version.html
index 465a62cd..372a77c5 100644
--- a/docs/unstable/apidocs/padl.version.html
+++ b/docs/unstable/apidocs/padl.version.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/apidocs/padl.wrap.html b/docs/unstable/apidocs/padl.wrap.html
index 5e8440dd..f6986a87 100644
--- a/docs/unstable/apidocs/padl.wrap.html
+++ b/docs/unstable/apidocs/padl.wrap.html
@@ -44,6 +44,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/genindex.html b/docs/unstable/genindex.html
index f28d87a3..531e0e33 100644
--- a/docs/unstable/genindex.html
+++ b/docs/unstable/genindex.html
@@ -42,6 +42,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/index.html b/docs/unstable/index.html
index 2afdb11a..39d061c0 100644
--- a/docs/unstable/index.html
+++ b/docs/unstable/index.html
@@ -44,6 +44,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/modules.html b/docs/unstable/modules.html
index 54cd0c24..588ceee9 100644
--- a/docs/unstable/modules.html
+++ b/docs/unstable/modules.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/objects.inv b/docs/unstable/objects.inv
index fa6502e8..d9b78dde 100644
Binary files a/docs/unstable/objects.inv and b/docs/unstable/objects.inv differ
diff --git a/docs/unstable/py-modindex.html b/docs/unstable/py-modindex.html
index 34baee3c..d35d6ae4 100644
--- a/docs/unstable/py-modindex.html
+++ b/docs/unstable/py-modindex.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/search.html b/docs/unstable/search.html
index 326c363a..dba7990b 100644
--- a/docs/unstable/search.html
+++ b/docs/unstable/search.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/searchindex.js b/docs/unstable/searchindex.js
index c325454b..243b59a9 100644
--- a/docs/unstable/searchindex.js
+++ b/docs/unstable/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({docnames:["README","advanced","advanced/saving","apidocs/padl","apidocs/padl.dumptools","apidocs/padl.dumptools.ast_utils","apidocs/padl.dumptools.inspector","apidocs/padl.dumptools.packagefinder","apidocs/padl.dumptools.serialize","apidocs/padl.dumptools.sourceget","apidocs/padl.dumptools.symfinder","apidocs/padl.dumptools.var2mod","apidocs/padl.exceptions","apidocs/padl.print_utils","apidocs/padl.transforms","apidocs/padl.util_transforms","apidocs/padl.utils","apidocs/padl.version","apidocs/padl.wrap","index","modules","usage","usage/apply","usage/combining_transforms","usage/creating_transforms","usage/debugging_your_transforms","usage/extras","usage/print_slice","usage/pytorch","usage/saving","usage/stages","usage/transform"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["README.md","advanced.md","advanced/saving.md","apidocs/padl.md","apidocs/padl.dumptools.md","apidocs/padl.dumptools.ast_utils.md","apidocs/padl.dumptools.inspector.md","apidocs/padl.dumptools.packagefinder.md","apidocs/padl.dumptools.serialize.md","apidocs/padl.dumptools.sourceget.md","apidocs/padl.dumptools.symfinder.md","apidocs/padl.dumptools.var2mod.md","apidocs/padl.exceptions.md","apidocs/padl.print_utils.md","apidocs/padl.transforms.md","apidocs/padl.util_transforms.md","apidocs/padl.utils.md","apidocs/padl.version.md","apidocs/padl.wrap.md","index.md","modules.md","usage.md","usage/apply.md","usage/combining_transforms.md","usage/creating_transforms.md","usage/debugging_your_transforms.md","usage/extras.md","usage/print_slice.md","usage/pytorch.md","usage/saving.md","usage/stages.md","usage/transform.md"],objects:{"":[[3,0,0,"-","padl"]],"padl.dumptools":[[5,0,0,"-","ast_utils"],[6,0,0,"-","inspector"],[7,0,0,"-","packagefinder"],[8,0,0,"-","serialize"],[9,0,0,"-","sourceget"],[10,0,0,"-","symfinder"],[11,0,0,"-","var2mod"]],"padl.dumptools.ast_utils":[[5,1,1,"","Position"],[5,2,1,"","get_position"],[5,2,1,"","get_source_segment"]],"padl.dumptools.inspector":[[6,1,1,"","CallInfo"],[6,2,1,"","caller_frame"],[6,2,1,"","caller_module"],[6,2,1,"","get_segment_from_frame"],[6,2,1,"","get_statement"],[6,2,1,"","get_surrounding_block"],[6,2,1,"","non_init_caller_frameinfo"],[6,2,1,"","outer_caller_frameinfo"],[6,2,1,"","trace_this"]],"padl.dumptools.inspector.CallInfo":[[6,3,1,"","module"]],"padl.dumptools.packagefinder":[[7,2,1,"","dump_packages_versions"],[7,2,1,"","get_packages"],[7,2,1,"","get_version"]],"padl.dumptools.serialize":[[8,1,1,"","Serializer"],[8,2,1,"","json_serializer"],[8,2,1,"","load_json"],[8,2,1,"","save_json"],[8,2,1,"","value"]],"padl.dumptools.serialize.Serializer":[[8,4,1,"","save"],[8,4,1,"","save_all"],[8,3,1,"","varname"]],"padl.dumptools.sourceget":[[9,1,1,"","ReplaceString"],[9,1,1,"","ReplaceStrings"],[9,2,1,"","cut"],[9,2,1,"","get_module_source"],[9,2,1,"","get_source"],[9,2,1,"","original"],[9,2,1,"","put_into_cache"]],"padl.dumptools.sourceget.ReplaceString":[[9,4,1,"","cut"]],"padl.dumptools.sourceget.ReplaceStrings":[[9,4,1,"","cut"]],"padl.dumptools.symfinder":[[10,5,1,"","NameNotFound"],[10,1,1,"","Scope"],[10,1,1,"","ScopedName"],[10,2,1,"","find"],[10,2,1,"","find_in_ipython"],[10,2,1,"","find_in_module"],[10,2,1,"","find_in_scope"],[10,2,1,"","find_in_source"],[10,2,1,"","replace_star_imports"],[10,2,1,"","split_call"]],"padl.dumptools.symfinder.Scope":[[10,4,1,"","empty"],[10,4,1,"","from_level"],[10,4,1,"","from_source"],[10,4,1,"","global_"],[10,4,1,"","is_global"],[10,3,1,"","module_name"],[10,4,1,"","toplevel"],[10,4,1,"","unscoped"],[10,4,1,"","up"]],"padl.dumptools.var2mod":[[11,1,1,"","CodeGraph"],[11,1,1,"","CodeNode"],[11,1,1,"","Finder"],[11,1,1,"","Vars"],[11,2,1,"","find_codenode"],[11,2,1,"","find_globals"],[11,2,1,"","increment_same_name_var"],[11,2,1,"","rename"]],"padl.dumptools.var2mod.CodeGraph":[[11,4,1,"","build"],[11,4,1,"","dumps"],[11,4,1,"","print"]],"padl.dumptools.var2mod.CodeNode":[[11,4,1,"","from_source"]],"padl.dumptools.var2mod.Finder":[[11,4,1,"","find"],[11,4,1,"","generic_visit"],[11,4,1,"","get_source_segments"]],"padl.dumptools.var2mod.Vars":[[11,6,1,"","globals"],[11,6,1,"","locals"]],"padl.exceptions":[[12,5,1,"","WrongDeviceError"]],"padl.print_utils":[[13,2,1,"","combine_multi_line_strings"],[13,2,1,"","create_arrow"],[13,2,1,"","create_reverse_arrow"],[13,2,1,"","format_argument"],[13,2,1,"","make_bold"],[13,2,1,"","make_green"],[13,2,1,"","visible_len"]],"padl.transforms":[[14,1,1,"","AtomicTransform"],[14,1,1,"","Batchify"],[14,1,1,"","BuiltinTransform"],[14,1,1,"","ClassTransform"],[14,1,1,"","Compose"],[14,1,1,"","FunctionTransform"],[14,1,1,"","Identity"],[14,1,1,"","Map"],[14,1,1,"","Parallel"],[14,1,1,"","Pipeline"],[14,1,1,"","Rollout"],[14,1,1,"","TorchModuleTransform"],[14,1,1,"","Transform"],[14,1,1,"","Unbatchify"],[14,2,1,"","fulldump"],[14,2,1,"","group"],[14,2,1,"","importdump"],[14,2,1,"","load"],[14,2,1,"","save"]],"padl.transforms.ClassTransform":[[14,3,1,"","source"]],"padl.transforms.FunctionTransform":[[14,3,1,"","source"]],"padl.transforms.Pipeline":[[14,4,1,"","grouped"],[14,4,1,"","pd_forward_device_check"],[14,4,1,"","pd_to"]],"padl.transforms.TorchModuleTransform":[[14,4,1,"","post_load"],[14,4,1,"","pre_save"]],"padl.transforms.Transform":[[14,4,1,"","eval_apply"],[14,4,1,"","infer_apply"],[14,4,1,"","pd_call_in_mode"],[14,3,1,"","pd_device"],[14,3,1,"","pd_forward"],[14,4,1,"","pd_forward_device_check"],[14,4,1,"","pd_get_loader"],[14,3,1,"","pd_layers"],[14,3,1,"","pd_name"],[14,4,1,"","pd_parameters"],[14,4,1,"","pd_post_load"],[14,3,1,"","pd_postprocess"],[14,4,1,"","pd_pre_save"],[14,3,1,"","pd_preprocess"],[14,4,1,"","pd_save"],[14,3,1,"","pd_stages"],[14,4,1,"","pd_to"],[14,4,1,"","pd_varname"],[14,4,1,"","pd_zip_save"],[14,4,1,"","train_apply"]],"padl.util_transforms":[[15,1,1,"","IfEval"],[15,1,1,"","IfInMode"],[15,1,1,"","IfInfer"],[15,1,1,"","IfTrain"],[15,1,1,"","Try"]],"padl.utils":[[16,6,1,"","same"]],"padl.wrap":[[18,1,1,"","PatchedModule"],[18,2,1,"","transform"]],padl:[[3,1,1,"","Batchify"],[3,1,1,"","Identity"],[3,1,1,"","IfEval"],[3,1,1,"","IfInMode"],[3,1,1,"","IfInfer"],[3,1,1,"","IfTrain"],[3,1,1,"","Unbatchify"],[4,0,0,"-","dumptools"],[12,0,0,"-","exceptions"],[3,2,1,"","fulldump"],[3,2,1,"","group"],[3,2,1,"","importdump"],[3,2,1,"","load"],[13,0,0,"-","print_utils"],[3,2,1,"","save"],[3,2,1,"","transform"],[14,0,0,"-","transforms"],[3,7,1,"","unbatch"],[15,0,0,"-","util_transforms"],[16,0,0,"-","utils"],[3,2,1,"","value"],[17,0,0,"-","version"],[18,0,0,"-","wrap"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","function","Python function"],"3":["py","property","Python property"],"4":["py","method","Python method"],"5":["py","exception","Python exception"],"6":["py","attribute","Python attribute"],"7":["py","data","Python data"]},objtypes:{"0":"py:module","1":"py:class","2":"py:function","3":"py:property","4":"py:method","5":"py:exception","6":"py:attribute","7":"py:data"},terms:{"0":[0,3,6,9,10,11,14,25,26,27],"0x":11,"1":[0,2,3,9,10,11,14,15,23,25,26,27,28],"10":[0,3,15,24,25],"100":[2,11,23,24,26,27],"1000":24,"11":[3,6,15],"123":6,"13":9,"2":[0,3,9,10,11,14,23,25,26,27],"20":0,"200":26,"244":23,"3":[0,3,5,6,10,11,14,23,25,26],"300":26,"4":[11,25,26],"5":[9,25],"6":25,"7":[0,25],"8":[0,5,25],"9":[0,9,25],"99":[3,15],"abstract":[0,14,19,25,31],"case":[2,3,9,10,14,23],"catch":[15,21],"class":[2,3,5,6,8,9,10,11,14,15,18,24,25,30],"const":2,"default":[2,3,6,7,8,10,14,15,23],"do":[2,3,12,14,21,22,24],"final":[15,26],"function":[0,2,3,6,8,10,11,14,18,19,23,24,25,31],"import":[0,2,3,7,10,11,14,15,18,19,22,23,24,25,26,29,30],"int":[5,6,9,10,11,13,14],"new":[9,10],"return":[0,2,6,7,8,9,10,11,14,22,23,24,26,27,30],"switch":[2,3,14,25],"true":[3,7,9,10,11,13,14,18,23,25,27],"try":[3,6,9,14,15,18,21,26],"var":11,A:[3,6,9,10,11,14,31],As:[2,11,30],At:25,By:23,For:[2,23,24,25,26],If:[0,2,3,8,9,10,11,13,14,15],In:[3,9,10,14,23,24],It:[2,6,10,14,22,24,28],No:15,On:25,One:[2,23],The:[2,3,6,8,9,10,11,13,14,15,21,22,23,25,30,31],Then:25,These:[2,14],To:[2,3,9,14,22,23,30],With:31,_:2,____________:13,__call__:[2,24],__file__:2,__init__:[2,6,24],__main__:10,_ast:[10,11],_generatorwithlength:22,_pd_main:2,_thingfind:10,_trace_thi:6,a_transform:2,about:[6,14,25,28,31],abov:23,absolut:[2,25],accept:14,access:[10,27,30],ad:[3,10,14,22,31],adam:28,adapt:28,add:[2,3,9,14,24,26,27],add_n:2,addconst:2,addfirst:26,addit:9,advanc:19,after:[2,3,14,25,28],again:2,ai:[0,19],airplan:22,alia:11,all:[0,2,6,8,11,12,14,18,19,21,22,23,28,29],allow:[0,9,10,19,22,23,26],along:28,also:[2,3,14,22,24,26],alwai:14,am:25,an:[0,2,6,9,10,11,13,14,19,22,25,26,28,31],analog:26,ani:[3,8,13,14,15],anoth:13,anyth:[2,19],apach:0,api:19,append:[2,8],appli:[2,3,13,14,15,19,21,23,25,30],applic:26,ar:[2,3,8,10,11,14,21,22,23,24,25,28,29,30],arbitrari:[0,19,26],arg:[2,6,14,22,25,27],argument:[2,6,10,13,14,22],aris:23,arrai:[2,11,26],arrow:13,ascii:13,assign:[10,14],ast:[5,7,10,11],ast_nod:11,ast_util:[19,20],atom:14,atomictransform:[14,25],attribut:[6,9,16,25],augment:[23,26,28,30],automat:[2,3,14,22],avail:[6,22],awar:2,axxxxxxxxxxxxxxxxxxxx:9,b:[3,9,11,14,15],back:15,backward:28,bar:[11,22,23],base:[0,8,14,19],batch:[0,3,14,21,22,23,25,28,30,31],batch_siz:[22,25,28],batchifi:[3,10,14,21,25],baz:23,becaus:0,becom:[6,10,23,24],been:14,befor:[2,6,14,22],being:[3,14,26],below:[11,25],berlin:[0,19],between:[11,23],bia:25,big:2,bla:7,blip:7,blob:0,block:6,blop:7,blu:7,bodi:[2,6,7,10,11],boilerpl:31,bold:13,bool:[3,6,9,10,11,14],both:[2,9,28],build:[0,2,10,11,19,31],build_my_transform:2,builder:[0,19],built:28,builtin:14,builtintransform:14,bup:7,c:[3,14],cach:9,call:[3,6,8,10,11,14,15,24,25,30],call_info:14,call_sourc:10,callabl:[3,6,8,14,18,24],caller:6,caller_fram:6,caller_modul:6,callinfo:[6,14],calling_scop:10,can:[0,2,3,6,9,10,14,15,19,22,23,24,25,26,27,28,29,30,31],canb:22,cannot:2,capabl:28,captur:16,carri:15,cat:22,catch_transform:15,caus:2,caveat:2,cell:9,central:31,chang:[2,6,15],charact:13,check:[14,25],checkpoint:29,child:[12,14],child_transform:12,children:14,classifi:[23,30],classmethod:[8,10,11],classtransform:14,claus:15,clean:2,close:26,co:25,code:[0,2,3,6,7,8,9,10,11,14,25,28,31],code_of_conduct:0,codegraph:[8,11],codenod:11,col:[6,9,11],col_offset:5,collect:[9,14,21],column:6,com:0,combin:[13,14,19,21,24,31],combine_multi_line_str:13,come:[18,24],command:25,comment:6,common:23,complet:[6,15],complex:[2,14,27,31],compon:[0,19,23],compos:[14,25,27,30],composit:23,comprehens:0,compress:[3,14],concat_low:26,concis:[0,21],condit:[15,21],condition:23,conduct:0,conflict:2,consid:2,consist:2,consol:25,constant:[2,9],construct:14,contain:[2,6,8,9,10,12,13,14,28,29],content:11,context:[6,14],continu:[23,30],contrast:14,contribut:19,conveni:28,convert:[0,10,19,24,28,30],coor:13,coordin:13,correct:14,correspond:[5,10,11,30],could:[2,10,23],count:10,counter:[10,11],cpu:[3,14],creat:[0,2,6,8,10,11,13,14,19,21,22,23,28,29,31],create_arrow:13,create_reverse_arrow:13,crop:23,cuda:[14,28],current:[0,2,10,25],custom:[14,25,31],cut:9,d:25,data:[2,14,19,21,30,31],dataload:[14,22,31],datapoint:[14,23],dataset:2,debug:[11,19,21,31],debugg:25,decor:[3,14,18,24],deep:[0,2,19,23,30,31],deeper:25,def:[0,2,6,10,11,14,24,26,27,30],def_sourc:10,defin:[8,10,11,21,25,29,30],definit:2,depend:[2,11,29],detail:[6,14,23],determin:[3,6,9,11,14,18],develop:[0,19],devic:[3,12,14,22],di:31,diagnos:25,dict:9,dictionari:[2,14],differ:[2,9,22,25,30],dim:[3,14,25],dimens:[3,14,22,31],directli:14,directori:2,disabl:[3,13,14,22],displai:25,document:[6,14],doe:[14,22,25],doesn:[3,15],dog:22,don:[2,3,6,13,14,18],done:[14,22],down:[2,25],drop:[6,10],drop_n:[6,10],dump:[2,3,7,8,11,14],dump_packages_vers:7,dumptool:[14,19,20],dure:[3,14,23,26],e:[3,10,14],each:[2,14,22,25,30],easili:31,ecosystem:[0,19],edg:11,effect:2,either:[2,9],eleg:31,element:[14,23,25,30],elp:25,els:[3,11,15],else_:[3,15],else_transform:15,emb:25,embed:25,embedding_dim:25,empti:[6,10],enabl:[2,3,14,31],end:[3,11,13,14],end_col_offset:5,end_lineno:5,enter:[6,25],entir:[24,25],entiti:10,entri:2,enumer:2,epeat:25,equival:26,error:[15,25],escap:13,eval:[3,14,15,21,22,26],eval_appli:[3,14,15,22,25,26],evalu:30,even:23,event:6,everi:13,everyth:[11,21,23,24],exactli:23,exampl:[0,2,3,6,7,9,10,11,13,14,15,18,22,26,30],except:[10,15,19,20,21,25],execut:[0,2,6,23,25],exist:[3,11,14],expect:[2,3,9,14,22,25],explicit:[9,11],explicitli:14,extens:[3,14],extra:[15,19,21,28],extract:6,f1:14,f2:14,f:[2,9,10,11,14],factori:16,fail:[15,25],fall:15,fals:[3,6,10,11,13,14,18],few:2,field:11,file:[2,3,9,14,26,29],file_suffix:8,fileexistserror:[3,14],filenam:[2,9,14,26],filter_builtin:11,finally_transform:15,find:[0,7,10,11],find_codenod:11,find_glob:11,find_in_ipython:10,find_in_modul:10,find_in_scop:10,find_in_sourc:10,finder:11,finish_right:13,first:[3,6,9,13,14,23],flat:23,flatten:[3,14,23],flexibl:31,folder:[2,3,14,29],follow:[2,6,10,11,21,25],foo:[7,11,14,23],force_overwrit:[3,14],form:[10,14,24,31],formal:31,format:[7,13,30,31],format_argu:13,forward:[0,14,19,21,22,24,25],found:[6,10,11],four:10,frame:[6,9],frameinfo:6,from:[0,3,6,7,9,10,11,14,15,19,22,24,25,26,28,29,30],from_:11,from_col:9,from_level:10,from_lin:9,from_sourc:[10,11],front:6,full:[0,2,3,14],fulldump:[2,3,14],fulli:[3,14],functiontransform:14,fundament:14,futur:2,g:14,gener:[14,22],generic_visit:11,germani:[0,19],get:[2,5,6,7,9,10,11,13,14,16,19,21,23,25,26],get_module_sourc:9,get_packag:7,get_posit:5,get_segment_from_fram:6,get_sourc:9,get_source_seg:[5,11],get_stat:6,get_surrounding_block:6,get_vers:7,getitem:[6,27],github:0,give:9,given:[3,6,7,9,10,11,14],global:[2,10,11],global_:10,globals_:11,go:[0,11,25],good:14,got:25,gotten:9,gpu:[14,22,30,31],gradient:[14,22,31],graph:11,great:[0,19],green:13,group:[3,14,21],h:25,ha:[2,9,11,14,23,25,28,30],hacki:6,handl:22,happen:[15,30],have:[0,14,19,28],head:23,hello:26,help:[14,25],helper:[3,8],here:[2,6,25],hidden:24,hierarchi:10,histori:10,hood:22,how:[10,14,22,23,24,27,29,30,31],howev:2,http:0,i:[2,3,10,14,25],id:9,ident:[3,14,15,21,27],identifi:10,if_:[3,15],ifev:[3,15,21,26],iff:10,ifinf:[3,15,21,26],ifinmod:[3,15],iftrain:[3,15,21,23,26],ignor:14,ignore_grad:14,ignore_scop:[3,6,14,18],iim:[3,15],imag:[13,30],implement:[14,24],importdump:[2,3,14],in_featur:25,includ:[2,9,14,28,29],incorpor:25,increment:11,increment_same_name_var:11,indent:6,index:14,indic:[10,14],individu:23,infer:[3,14,15,21,22,26,28,30],infer_appli:[3,14,15,22,25,26],infer_pipelin:28,inform:[6,14,25],initi:[2,14,28],inlin:[6,14],inline_wrap:14,innov:[0,19],input:[3,9,13,14,22,23,25,26],insert:9,insid:[15,25],inspect:[6,9,14,25,31],inspector:[14,19,20],instanc:[2,22,23,24,28],instead:[2,3,6,14,18],interact:[2,25,29,31],interest:0,intern:22,introduct:19,invers:[3,14],io:0,ipython:[2,9,10,27],is_glob:10,isinst:[9,11,18],issu:0,item:[0,3,10,14,16,22,26],iter:[14,22,28],its:[10,11,14,25],itself:6,jpg:22,json:[2,8],json_seri:8,just:[2,3,14],keep:23,kei:9,keyword:[0,14,19],know:21,kwarg:[6,14],l1:24,l2:24,lab:[0,19],lambda:[3,14,15,23,24,25,26],larg:2,larger:6,largest:6,last:[2,9,13,14],layer1:28,layer2:28,layer:[0,14,19,25],learn:[0,19,22,23,24,28,29,30,31],len:[2,22],length:[13,23],let:25,level:[2,6,10,23,25],lf1:[0,19],licens:19,like:[2,22,30],limit:2,lin:24,line:[6,9,10,13,14,25],linear:[0,24,25],lineno:[5,6,10,11],list:[2,3,7,9,10,11,13,14,15,22,25,26,28,29],liter:[3,6,14,15],live:11,load:[0,2,3,8,14,19,21,22,23,28,30],load_data:2,load_funct:8,load_imag:[23,30],load_json:8,loader:[8,14],loc:9,local:11,locat:[6,9],log10:24,longtensor:25,look:[0,2,6,10],lookup:[28,30],loop:[10,22,28],loss:[0,19,23,28],lower:26,lr:28,macro:23,made:[6,14],mai:[0,19],main:[0,10,12],maintain:9,make:[0,13,19,21,25,28],make_bold:13,make_green:13,manual:0,map:14,mark:[3,8,14],match:[3,6,12,14,15,25],math:24,md:0,mean:[2,3,14,23],messi:2,method:[6,14,21,26],might:[2,26],minim:31,minus100:24,minusx:[24,26,27],mlp:24,mml:24,mode:[3,14,15,22],model:[0,2,14,19,28,30],model_pass:23,modifi:9,modul:[3,6,7,8,9,10,11,14,18,19,21,23,24,27,29,30],module_nam:[6,10],more:[2,3,6,14,23,31],most:[10,23,30],mother:12,mother_transform:12,move:[3,14,23,25],mpiler:25,much:31,multi:[6,13,31],multipl:[2,14,22,24,28],multiprocess:14,must:[2,6,14,23],my:2,my_classifi:[22,30],my_classifier_transform:[23,30],my_pipelin:[0,2,28,29],myfil:2,myfunct:6,mykei:9,myload:2,mypipelin:29,mypytorchlay:28,mysav:2,mytransform:2,n:[6,10,11,14],n_final_row:13,n_in:24,n_initial_row:13,n_out:24,n_to_add:2,name:[2,3,6,7,10,11,14,15,30],namenotfound:10,natur:22,need:[2,8,14,19],nest:[10,27,28],never:14,next:[22,23,24,27,28,29,30,31],nextmodul:6,nn:[0,14,24,25],node:[5,7,10,11],nodetyp:11,nodevisitor:11,non:9,non_init_caller_frameinfo:6,none:[3,6,8,10,11,14,15,18],normal:[2,9,14],not_found:2,note:[2,6],notebook:[0,2,31],noth:[3,14,21],now:2,np:[2,11,18,24,26],nput:25,npy:2,nth:23,num_embed:25,num_work:[22,25,28],number:[6,10,11,13],numpi:[2,18,24],o:11,object:[6,9,10,11,14,22,26],occur:15,offset:[6,11],often:26,one:[2,3,10,13,14,15,23,25,30],onli:[2,11,23,26],open:[2,23,26],open_fil:26,oper:23,optim:28,option:[3,6,8,11,14,15],order:14,ordereddict:14,origin:[6,9],other:[14,15],otherwis:[3,14,15],out:[6,9,10,11,15,18,23,24],out_featur:25,outer:6,outer_caller_frameinfo:6,output:[3,14,15,22,23,30],over:[13,14,23,28],overlap:9,overrid:14,overwrit:[3,14],own:[2,25],p:25,packag:[0,2,3,7,14,19,25,29],packagefind:[19,20],pad:13,padl:[2,20,23,24,25,26,27,29,30,31],padl_value_0:2,page:21,parallel:[3,14],param:14,paramet:[2,3,6,7,8,9,10,11,12,13,14,15,18,29],parent:[2,18],parenthes:23,pars:[7,11],part:[9,14,21,22,25,30],parti:2,particular:24,pass:[0,2,3,14,19,22],patch:18,patchedmodul:18,path:[2,3,8,14,23,30],pathlib:[2,3,8,14],pd_call_in_mod:14,pd_debug:[21,25],pd_devic:14,pd_forward:[14,22,30],pd_forward_device_check:14,pd_get_load:14,pd_group:14,pd_layer:[14,28],pd_name:[14,15],pd_np:18,pd_paramet:[14,28],pd_post_load:14,pd_postprocess:[14,30],pd_pre_sav:14,pd_preprocess:[14,30],pd_save:14,pd_stage:14,pd_to:[14,28],pd_varnam:14,pd_zip_sav:14,perform:[3,14,15],pick:2,piec:[10,11],pil:23,piltotensor:23,pip:0,pipelin:[0,14,19,21,22,24,25,27,28,29,30],pleas:0,pluson:2,plustwo:2,posit:[5,9,11,25],possibl:[2,6,14,24,28],post:[0,14,19,30],post_load:14,postprocess:[3,14,19,21,22,23,25],potenti:[2,6],power:23,pre:[0,9,14,19,30],pre_sav:14,preced:13,predict:[23,28],prefer:0,prepar:0,preprocess:[3,14,19,21,22,23,25,28,31],preprocess_imag:23,pretti:27,prevent:[2,3,14],previous:2,print:[6,11,13,14,19,21,25,29],print_util:[19,20],process:[0,2,14,19,22,30,31],produc:25,progress:22,propag:14,properti:[6,8,10,14],provid:[2,23,25],pt:2,put:9,put_into_cach:9,py:[2,29],pypi:2,python:[0,2,5,6,10,11,19,23,24,29],pytorch:[0,14,19,21,22,23,24,27,29,30],q:25,quit:25,r:25,rais:[3,6,14,25],rand:18,random:18,randomresizedcrop:23,randomrot:23,rang:2,ransform:25,rather:[2,6,14],re:[0,19,23],reach:25,read:[2,21,22,26,27,31],read_from_path:26,readabl:30,recent:10,recreat:2,recurs:[3,14,25],ref:25,refer:21,regardless:15,relev:25,relu:24,rememb:28,remov:[3,6,14,22],renam:[2,11],rename_loc:11,repeat:[2,23,25],repl:9,replac:[9,10],replace_cach:9,replace_star_import:10,replacestr:9,repres:[10,11],reproduc:31,requir:[2,6],reshap:30,resiz:23,resnet18:[23,30],respect:[3,11,14,26],respons:[2,30],rest:6,result:[2,3,6,9,14,23],retriev:25,return_loc:6,return_parti:10,revers:2,roll:23,rollout:[3,14],row:6,rstring:9,run:25,runtimeerror:25,s:[3,6,7,8,9,10,14,15,21,22,24,28,29,30],same:[3,5,6,9,10,11,14,16,21,23,25,28],save:[1,3,8,14,19,21,22,31],save_al:8,save_funct:8,save_json:8,saver:8,scope:[3,6,10,11,14,18],scoped_nam:11,scopednam:[10,11],scopelist:10,search:[10,11,14],second:[2,3,10,14,23],section:[9,22,23,24,27,28,29,30,31],see:[0,2,3,6,14,22],segment:[5,6,10,11],segment_typ:6,self:[2,10,14,24],send:[14,22,28,31],sequenc:[13,14,23],seri:14,serial:[3,14,19,20],session:[2,29],set:[2,8,11,14,22],settrac:6,shape:25,should:[2,3,6,8,14],show:[22,25],shown:25,similar:2,simpli:[2,14],sin:24,sinc:25,singl:[0,14,19,22,23],size:[22,25],slice:[19,21,29,31],slower:0,so:[10,23,25],some:[2,23,25,28],somemodul:11,someobject:2,someth:[2,26],sometim:2,soon:6,sourc:[5,6,7,9,10,11,14],sourceget:[19,20],space:[6,13],special:[23,26,30],specifi:[3,9,10,14,22],split:[2,10],split_cal:10,stack:6,stage:[14,19,21,22,23,25],stand:30,standard:[0,19],star:[2,10],start:[3,10,13,14,19,21,25],start_left:13,state_dict:28,statement:[2,3,6,10,14,15,25],step:[14,23,28],stop:31,store:[2,3,8,28,29],str:[2,3,6,8,9,10,11,13,14,15],string:[3,7,8,9,10,11,13,14],sub:[9,11,14,23,27],subclass:10,substr:9,subval:2,successfulli:15,suffix:2,suggest:30,superimpos:13,support:[0,2,22],surround:[6,10],sy:6,symbol:[2,10],symfind:[6,11,19,20],t1:[14,23,27],t2:[14,23,27],t3:[14,23,27],t4:27,t5:27,t:[2,3,6,13,14,15,18,23,25,26],take:[13,23],taken:[9,24],target:[6,23],target_mod:[3,15],tensor:[0,3,14,22],text:[0,2],textcorpu:2,than:2,them:[2,3,14,21,23,28],thereof:[3,14],thi:[2,3,6,9,10,11,13,14,15,22,23,24,25,27,28,29],thing:[2,3,8,9,10,11],third:2,those:[2,11,28,30],three:[22,23],through:[11,22,23],thu:[2,23],time:2,to_col:9,to_lin:9,to_tensor:25,toarrai:2,togeth:27,too:[24,27,29],top:[10,13,25],topic:19,topk:0,toplevel:[3,6,10,14,18],topolog:[0,19],torch:[0,14,24,25,28],torchmoduletransform:14,torchvis:[23,30],totensor:[23,30],tqdm:22,trace:6,trace_thi:6,tracefunc:6,track:2,train:[3,14,15,21,22,26,28,30],train_appli:[14,22,25,28],train_data:28,train_model:28,train_pipelin:28,training_pipelin:23,transform:[0,3,10,12,15,16,18,19,20,21,27,29,30],transform_or_modul:[3,14],transpar:[13,31],tree:[0,10,11],tupl:[2,3,6,10,11,14,15,23],turn:14,tvt:23,two:2,txt:[2,29],type:[6,11],typic:14,u:25,uit:25,unbatch:[0,3,21,23,30],unbatchifi:[3,14],under:[0,22],undo:2,unind:6,union:[3,14,15],uniqu:14,unscop:10,unsqueez:[3,14],until:25,up:[2,10,25],updat:22,us:[0,2,3,6,7,8,9,10,11,13,14,15,18,19,21,22,23,24,25,26,27,30,31],usag:[0,19],use_replace_cach:9,user:[0,19,25],usual:30,util:[6,7,13,14,19,20,23,28],util_transform:[19,20],v:13,val:[2,3,8],valu:[3,8,9,10,13,21],valueerror:6,var2mod:[19,20],var_nam:10,variabl:[10,11,14,25],variou:[9,10],varnam:[8,10],veri:2,version:[0,2,7,9,10,14,19,20,29],via:[2,14,27,28,29,30],view:23,visibl:13,visible_len:13,visitor:11,w:25,wa:[0,6,14,19,25],wai:[10,25],want:[2,26],we:[2,25,30],well:10,were:[2,10],what:[14,26,30],whatev:14,when:[2,3,14,15,24,25,28,29],where:[6,9,11,13,25],wherea:30,which:[2,3,6,9,10,11,14,22,23,29],whole:[14,31],whose:[3,14],wide:6,within:[6,9,10,14,28],without:31,word:2,word_index:2,wordindex:2,work:[27,28,31],worker:22,workflow:[30,31],worri:31,would:[2,9,10,23],wrap:[2,3,14,19,20,24],wrap_typ:14,wrappe:[3,18],wrapper:[3,18,24],write:[0,2,3,14,19],written:10,wrongdeviceerror:12,x1:14,x2:14,x3:14,x:[0,2,3,9,10,11,13,14,15,23,24,25,26,27,30],xxxx:9,xxxxxaxxxxxxxxxxxxxxxxxxxx:9,xxxxxxxxxxx:9,xxxxxxxxxxxxxb:9,xxxxxxxxxxxxxbxxxx:9,y:[11,13,23,24,27],you:[0,2,19,23,26,31],your:[2,19,21,31],z:[11,23],zero_grad:28,zip:[3,14]},titles:["Introduction","Advanced Topics","Saving","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.ast_utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.inspector</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.packagefinder</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.serialize</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.sourceget</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.symfinder</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.var2mod</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.exceptions</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.print_utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.transforms</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.util_transforms</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.version</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.wrap</span></code>","Welcome to PADL\u2019s documentation!","API Documentation","Usage","Applying Transforms to Data","Combining Transforms into Pipelines","Creating Transforms","Debugging your Transforms","Extras","Printing and Slicing","Using PyTorch Modules with Transforms","Saving and Loading","Stages: Preprocess, Forward and Postprocess","<em>Transforms</em> and <em>Pipelines</em>"],titleterms:{"import":21,The:26,access:28,advanc:1,an:23,anyth:21,api:20,appli:[22,26],ast_util:5,automat:28,block:2,build:23,combin:23,compos:23,content:[1,19,20,21],contribut:0,convert:23,creat:24,custom:2,data:22,debug:25,defin:2,depend:26,devic:28,dict:28,dictionari:23,differ:23,document:[19,20],doe:2,dumptool:[4,5,6,7,8,9,10,11],exampl:[23,25],except:[12,26],extra:26,extract:23,first:0,forward:[23,30],from:[2,21,23],gener:23,get:0,group:23,handl:26,how:2,imag:23,inspector:6,instal:0,introduct:0,item:23,layer:28,licens:0,load:29,loop:2,map:23,mode:26,model:23,modul:[2,28],multipl:23,mutat:2,need:21,nest:2,object:2,other:2,packagefind:7,padl:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,28],parallel:23,paramet:28,pass:23,pipelin:[23,31],post:23,postprocess:30,pre:23,preprocess:30,print:27,print_util:13,process:23,program:0,pytorch:[2,28],resourc:0,rollout:23,s:19,same:26,sampl:23,save:[2,28,29],scope:2,serial:[2,8],share:28,slice:27,sourceget:9,stage:30,start:0,state:28,symfind:10,target:2,tensor:23,topic:1,train:23,transform:[2,14,22,23,24,25,26,28,31],us:28,usag:21,util:[16,26],util_transform:15,valu:2,var2mod:11,variabl:2,version:[17,23],weight:28,welcom:19,what:2,within:2,work:2,wrap:18,you:21,your:[0,25]}})
\ No newline at end of file
+Search.setIndex({docnames:["README","advanced","advanced/saving","apidocs/padl","apidocs/padl.dumptools","apidocs/padl.dumptools.ast_utils","apidocs/padl.dumptools.inspector","apidocs/padl.dumptools.packagefinder","apidocs/padl.dumptools.serialize","apidocs/padl.dumptools.sourceget","apidocs/padl.dumptools.symfinder","apidocs/padl.dumptools.var2mod","apidocs/padl.exceptions","apidocs/padl.print_utils","apidocs/padl.transforms","apidocs/padl.util_transforms","apidocs/padl.utils","apidocs/padl.version","apidocs/padl.wrap","index","modules","usage","usage/apply","usage/combining_transforms","usage/creating_transforms","usage/debugging_your_transforms","usage/extras","usage/print_slice","usage/pytorch","usage/saving","usage/stages","usage/transform"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":4,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":3,"sphinx.domains.rst":2,"sphinx.domains.std":2,"sphinx.ext.intersphinx":1,sphinx:56},filenames:["README.md","advanced.md","advanced/saving.md","apidocs/padl.md","apidocs/padl.dumptools.md","apidocs/padl.dumptools.ast_utils.md","apidocs/padl.dumptools.inspector.md","apidocs/padl.dumptools.packagefinder.md","apidocs/padl.dumptools.serialize.md","apidocs/padl.dumptools.sourceget.md","apidocs/padl.dumptools.symfinder.md","apidocs/padl.dumptools.var2mod.md","apidocs/padl.exceptions.md","apidocs/padl.print_utils.md","apidocs/padl.transforms.md","apidocs/padl.util_transforms.md","apidocs/padl.utils.md","apidocs/padl.version.md","apidocs/padl.wrap.md","index.md","modules.md","usage.md","usage/apply.md","usage/combining_transforms.md","usage/creating_transforms.md","usage/debugging_your_transforms.md","usage/extras.md","usage/print_slice.md","usage/pytorch.md","usage/saving.md","usage/stages.md","usage/transform.md"],objects:{"":[[3,0,0,"-","padl"]],"padl.dumptools":[[5,0,0,"-","ast_utils"],[6,0,0,"-","inspector"],[7,0,0,"-","packagefinder"],[8,0,0,"-","serialize"],[9,0,0,"-","sourceget"],[10,0,0,"-","symfinder"],[11,0,0,"-","var2mod"]],"padl.dumptools.ast_utils":[[5,1,1,"","Position"],[5,2,1,"","get_position"],[5,2,1,"","get_source_segment"]],"padl.dumptools.inspector":[[6,1,1,"","CallInfo"],[6,2,1,"","caller_frame"],[6,2,1,"","caller_module"],[6,2,1,"","get_segment_from_frame"],[6,2,1,"","get_statement"],[6,2,1,"","get_surrounding_block"],[6,2,1,"","non_init_caller_frameinfo"],[6,2,1,"","outer_caller_frameinfo"],[6,2,1,"","trace_this"]],"padl.dumptools.inspector.CallInfo":[[6,3,1,"","module"]],"padl.dumptools.packagefinder":[[7,2,1,"","dump_packages_versions"],[7,2,1,"","get_packages"],[7,2,1,"","get_version"]],"padl.dumptools.serialize":[[8,1,1,"","Serializer"],[8,2,1,"","json_serializer"],[8,2,1,"","load_json"],[8,2,1,"","save_json"],[8,2,1,"","value"]],"padl.dumptools.serialize.Serializer":[[8,4,1,"","save"],[8,4,1,"","save_all"],[8,3,1,"","varname"]],"padl.dumptools.sourceget":[[9,1,1,"","ReplaceString"],[9,1,1,"","ReplaceStrings"],[9,2,1,"","cut"],[9,2,1,"","get_module_source"],[9,2,1,"","get_source"],[9,2,1,"","original"],[9,2,1,"","put_into_cache"]],"padl.dumptools.sourceget.ReplaceString":[[9,4,1,"","cut"]],"padl.dumptools.sourceget.ReplaceStrings":[[9,4,1,"","cut"]],"padl.dumptools.symfinder":[[10,5,1,"","NameNotFound"],[10,1,1,"","Scope"],[10,1,1,"","ScopedName"],[10,2,1,"","find"],[10,2,1,"","find_in_ipython"],[10,2,1,"","find_in_module"],[10,2,1,"","find_in_scope"],[10,2,1,"","find_in_source"],[10,2,1,"","replace_star_imports"],[10,2,1,"","split_call"]],"padl.dumptools.symfinder.Scope":[[10,4,1,"","empty"],[10,4,1,"","from_level"],[10,4,1,"","from_source"],[10,4,1,"","global_"],[10,4,1,"","is_global"],[10,3,1,"","module_name"],[10,4,1,"","toplevel"],[10,4,1,"","unscoped"],[10,4,1,"","up"]],"padl.dumptools.var2mod":[[11,1,1,"","CodeGraph"],[11,1,1,"","CodeNode"],[11,1,1,"","Finder"],[11,1,1,"","Vars"],[11,2,1,"","find_codenode"],[11,2,1,"","find_globals"],[11,2,1,"","increment_same_name_var"],[11,2,1,"","rename"]],"padl.dumptools.var2mod.CodeGraph":[[11,4,1,"","build"],[11,4,1,"","dumps"],[11,4,1,"","print"]],"padl.dumptools.var2mod.CodeNode":[[11,4,1,"","from_source"]],"padl.dumptools.var2mod.Finder":[[11,4,1,"","find"],[11,4,1,"","generic_visit"],[11,4,1,"","get_source_segments"]],"padl.dumptools.var2mod.Vars":[[11,6,1,"","globals"],[11,6,1,"","locals"]],"padl.exceptions":[[12,5,1,"","WrongDeviceError"]],"padl.print_utils":[[13,2,1,"","combine_multi_line_strings"],[13,2,1,"","create_arrow"],[13,2,1,"","create_reverse_arrow"],[13,2,1,"","format_argument"],[13,2,1,"","make_bold"],[13,2,1,"","make_green"],[13,2,1,"","visible_len"]],"padl.transforms":[[14,1,1,"","AtomicTransform"],[14,1,1,"","Batchify"],[14,1,1,"","BuiltinTransform"],[14,1,1,"","ClassTransform"],[14,1,1,"","Compose"],[14,1,1,"","FunctionTransform"],[14,1,1,"","Identity"],[14,1,1,"","Map"],[14,1,1,"","Parallel"],[14,1,1,"","Pipeline"],[14,1,1,"","Rollout"],[14,1,1,"","TorchModuleTransform"],[14,1,1,"","Transform"],[14,1,1,"","Unbatchify"],[14,2,1,"","fulldump"],[14,2,1,"","group"],[14,2,1,"","importdump"],[14,2,1,"","load"],[14,2,1,"","save"]],"padl.transforms.ClassTransform":[[14,3,1,"","source"]],"padl.transforms.FunctionTransform":[[14,3,1,"","source"]],"padl.transforms.Pipeline":[[14,4,1,"","grouped"],[14,4,1,"","pd_forward_device_check"],[14,4,1,"","pd_to"]],"padl.transforms.TorchModuleTransform":[[14,4,1,"","post_load"],[14,4,1,"","pre_save"]],"padl.transforms.Transform":[[14,4,1,"","eval_apply"],[14,4,1,"","infer_apply"],[14,4,1,"","pd_call_in_mode"],[14,3,1,"","pd_device"],[14,3,1,"","pd_forward"],[14,4,1,"","pd_forward_device_check"],[14,4,1,"","pd_get_loader"],[14,3,1,"","pd_layers"],[14,3,1,"","pd_name"],[14,4,1,"","pd_parameters"],[14,4,1,"","pd_post_load"],[14,3,1,"","pd_postprocess"],[14,4,1,"","pd_pre_save"],[14,3,1,"","pd_preprocess"],[14,4,1,"","pd_save"],[14,3,1,"","pd_stages"],[14,4,1,"","pd_to"],[14,4,1,"","pd_varname"],[14,4,1,"","pd_zip_save"],[14,4,1,"","train_apply"]],"padl.util_transforms":[[15,1,1,"","IfEval"],[15,1,1,"","IfInMode"],[15,1,1,"","IfInfer"],[15,1,1,"","IfTrain"],[15,1,1,"","Try"]],"padl.utils":[[16,6,1,"","same"]],"padl.wrap":[[18,1,1,"","PatchedModule"],[18,2,1,"","transform"]],padl:[[3,1,1,"","Batchify"],[3,1,1,"","Identity"],[3,1,1,"","IfEval"],[3,1,1,"","IfInMode"],[3,1,1,"","IfInfer"],[3,1,1,"","IfTrain"],[3,1,1,"","Unbatchify"],[4,0,0,"-","dumptools"],[12,0,0,"-","exceptions"],[3,2,1,"","fulldump"],[3,2,1,"","group"],[3,2,1,"","importdump"],[3,2,1,"","load"],[13,0,0,"-","print_utils"],[3,2,1,"","save"],[3,2,1,"","transform"],[14,0,0,"-","transforms"],[3,7,1,"","unbatch"],[15,0,0,"-","util_transforms"],[16,0,0,"-","utils"],[3,2,1,"","value"],[17,0,0,"-","version"],[18,0,0,"-","wrap"]]},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","function","Python function"],"3":["py","property","Python property"],"4":["py","method","Python method"],"5":["py","exception","Python exception"],"6":["py","attribute","Python attribute"],"7":["py","data","Python data"]},objtypes:{"0":"py:module","1":"py:class","2":"py:function","3":"py:property","4":"py:method","5":"py:exception","6":"py:attribute","7":"py:data"},terms:{"0":[0,3,6,9,10,11,14,25,26,27],"0x":11,"1":[0,2,3,9,10,11,14,15,23,25,26,27,28],"10":[0,3,15,24,25],"100":[2,11,23,24,26,27],"1000":24,"11":[3,6,15],"123":6,"13":9,"2":[0,3,9,10,11,14,23,25,26,27],"20":0,"200":26,"244":23,"3":[0,3,5,6,10,11,14,23,25,26],"300":26,"4":[11,25,26],"5":[9,25],"6":25,"7":[0,25],"8":[0,5,25],"9":[0,9,25],"99":[3,15],"abstract":[0,14,19,25,31],"case":[2,3,9,10,14,23],"catch":[15,21],"class":[2,3,5,6,8,9,10,11,14,15,18,24,25,30],"const":2,"default":[2,3,6,7,8,10,14,15,23],"do":[2,3,12,14,21,22,24],"final":[15,26],"function":[0,2,3,6,8,10,11,14,18,19,23,24,25,31],"import":[0,2,3,7,10,11,14,15,18,19,22,23,24,25,26,29,30],"int":[5,6,9,10,11,13,14],"new":[9,10],"return":[0,2,6,7,8,9,10,11,14,22,23,24,26,27,30],"switch":[2,3,14,25],"true":[3,7,9,10,11,13,14,18,23,25,27],"try":[3,6,9,14,15,18,21,26],"var":11,A:[3,6,9,10,11,14,31],As:[2,11,30],At:25,By:23,For:[2,23,24,25,26],If:[0,2,3,8,9,10,11,13,14,15],In:[3,9,10,14,23,24],It:[2,6,10,14,22,24,28],No:15,On:25,One:[2,23],The:[2,3,6,8,9,10,11,13,14,15,21,22,23,25,30,31],Then:25,These:[2,14],To:[2,3,9,14,22,23,30],With:31,_:2,____________:13,__call__:[2,24],__file__:2,__init__:[2,6,24],__main__:10,_ast:[10,11],_generatorwithlength:22,_pd_main:2,_thingfind:10,_trace_thi:6,a_transform:2,about:[6,14,25,28,31],abov:23,absolut:[2,25],accept:14,access:[10,27,30],ad:[3,10,14,22,31],adam:28,adapt:28,add:[2,3,9,14,24,26,27],add_n:2,addconst:2,addfirst:26,addit:9,advanc:19,after:[2,3,14,25,28],again:2,ai:[0,19],airplan:22,alia:11,all:[0,2,6,8,11,12,14,18,19,21,22,23,28,29],allow:[0,9,10,19,22,23,26],along:28,also:[2,3,14,22,24,26],alwai:14,am:25,an:[0,2,6,9,10,11,13,14,19,22,25,26,28,31],analog:26,analysi:0,ani:[3,8,13,14,15],anoth:13,anyth:[2,19],apach:0,api:19,append:[2,8],appli:[2,3,13,14,15,19,21,23,25,30],applic:26,ar:[2,3,8,10,11,14,21,22,23,24,25,28,29,30],arbitrari:[0,19,26],arg:[2,6,14,22,25,27],argument:[2,6,10,13,14,22],aris:23,arrai:[2,11,26],arrow:13,ascii:13,assign:[10,14],ast:[5,7,10,11],ast_nod:11,ast_util:[19,20],atom:14,atomictransform:[14,25],attribut:[6,9,16,25],augment:[23,26,28,30],automat:[2,3,14,22],avail:[6,22],awar:2,axxxxxxxxxxxxxxxxxxxx:9,b:[3,9,11,14,15],back:15,backward:28,bar:[11,22,23],base:[0,8,14,19],batch:[0,3,14,21,22,23,25,28,30,31],batch_siz:[22,25,28],batchifi:[3,10,14,21,25],baz:23,becaus:0,becom:[6,10,23,24],been:14,befor:[2,6,14,22],being:[3,14,26],below:[11,25],berlin:[0,19],between:[11,23],bia:25,big:2,bla:7,blip:7,blob:0,block:6,blop:7,blu:7,bodi:[2,6,7,10,11],boilerpl:31,bold:13,bool:[3,6,9,10,11,14],both:[2,9,28],build:[0,2,10,11,19,31],build_my_transform:2,builder:[0,19],built:28,builtin:14,builtintransform:14,bup:7,c:[3,14],cach:9,call:[3,6,8,10,11,14,15,24,25,30],call_info:14,call_sourc:10,callabl:[3,6,8,14,18,24],caller:6,caller_fram:6,caller_modul:6,callinfo:[6,14],calling_scop:10,can:[0,2,3,6,9,10,14,15,19,22,23,24,25,26,27,28,29,30,31],canb:22,cannot:2,capabl:28,captur:16,carri:15,cat:22,catch_transform:15,caus:2,caveat:2,cell:9,central:31,chang:[2,6,15],charact:13,check:[14,25],checkpoint:29,child:[12,14],child_transform:12,children:14,classifi:[23,30],classmethod:[8,10,11],classtransform:14,claus:15,clean:2,close:26,co:25,code:[0,2,3,6,7,8,9,10,11,14,25,28,31],code_of_conduct:0,codegraph:[8,11],codenod:11,col:[6,9,11],col_offset:5,collect:[9,14,21],column:6,com:0,combin:[13,14,19,21,24,31],combine_multi_line_str:13,come:[18,24],command:25,comment:6,common:23,complet:[6,15],complex:[2,14,27,31],compon:[0,19,23],compos:[14,25,27,30],composit:23,comprehens:0,compress:[3,14],concat_low:26,concis:[0,21],condit:[15,21],condition:23,conduct:0,conflict:2,consid:2,consist:2,consol:25,constant:[2,9],construct:14,contain:[2,6,8,9,10,12,13,14,28,29],content:11,context:[6,14],continu:[23,30],contrast:14,contribut:19,conveni:28,convert:[0,10,19,24,28,30],coor:13,coordin:13,correct:14,correspond:[5,10,11,30],could:[2,10,23],count:10,counter:[10,11],cpu:[3,14],creat:[0,2,6,8,10,11,13,14,19,21,22,23,28,29,31],create_arrow:13,create_reverse_arrow:13,crop:23,cuda:[14,28],current:[0,2,10,25],custom:[14,25,31],cut:9,d:25,data:[2,14,19,21,30,31],dataload:[14,22,31],datapoint:[14,23],dataset:2,debug:[11,19,21,31],debugg:25,decor:[3,14,18,24],deep:[0,2,19,23,30,31],deeper:25,def:[0,2,6,10,11,14,24,26,27,30],def_sourc:10,defin:[8,10,11,21,25,29,30],definit:2,depend:[2,11,29],detail:[6,14,23],determin:[3,6,9,11,14,18],develop:[0,19],devic:[3,12,14,22],di:31,diagnos:25,dict:9,dictionari:[2,14],differ:[2,9,22,25,30],dim:[3,14,25],dimens:[3,14,22,31],directli:14,directori:2,disabl:[3,13,14,22],displai:25,document:[6,14],doe:[14,22,25],doesn:[3,15],dog:22,don:[2,3,6,13,14,18],done:[14,22],down:[2,25],drop:[6,10],drop_n:[6,10],dump:[2,3,7,8,11,14],dump_packages_vers:7,dumptool:[14,19,20],dure:[3,14,23,26],e:[3,10,14],each:[2,14,22,25,30],easili:31,ecosystem:[0,19],edg:11,effect:2,either:[2,9],eleg:31,element:[14,23,25,30],elp:25,els:[3,11,15],else_:[3,15],else_transform:15,emb:25,embed:25,embedding_dim:25,empti:[6,10],enabl:[2,3,14,31],end:[3,11,13,14],end_col_offset:5,end_lineno:5,enter:[6,25],entir:[24,25],entiti:10,entri:2,enumer:2,epeat:25,equival:26,error:[15,25],escap:13,eval:[3,14,15,21,22,26],eval_appli:[3,14,15,22,25,26],evalu:30,even:23,event:6,everi:13,everyth:[11,21,23,24],exactli:23,exampl:[0,2,3,6,7,9,10,11,13,14,15,18,22,26,30],except:[10,15,19,20,21,25],execut:[0,2,6,23,25],exist:[3,11,14],expect:[2,3,9,14,22,25],explicit:[9,11],explicitli:14,extens:[3,14],extra:[15,19,21,28],extract:6,f1:14,f2:14,f:[2,9,10,11,14],factori:16,fail:[15,25],fall:15,fals:[3,6,10,11,13,14,18],few:2,field:11,file:[2,3,9,14,26,29],file_suffix:8,fileexistserror:[3,14],filenam:[2,9,14,26],filter_builtin:11,finally_transform:15,find:[0,7,10,11],find_codenod:11,find_glob:11,find_in_ipython:10,find_in_modul:10,find_in_scop:10,find_in_sourc:10,finder:11,finish_right:13,first:[3,6,9,13,14,23],flat:23,flatten:[3,14,23],flexibl:31,folder:[2,3,14,29],follow:[2,6,10,11,21,25],foo:[7,11,14,23],force_overwrit:[3,14],form:[10,14,24,31],formal:31,format:[7,13,30,31],format_argu:13,forward:[0,14,19,21,22,24,25],found:[6,10,11],four:10,frame:[6,9],frameinfo:6,from:[0,3,6,7,9,10,11,14,15,19,22,24,25,26,28,29,30],from_:11,from_col:9,from_level:10,from_lin:9,from_sourc:[10,11],front:6,full:[0,2,3,14],fulldump:[2,3,14],fulli:[3,14],functiontransform:14,fundament:14,futur:2,g:14,gener:[14,22],generic_visit:11,germani:[0,19],get:[2,5,6,7,9,10,11,13,14,16,19,21,23,25,26],get_module_sourc:9,get_packag:7,get_posit:5,get_segment_from_fram:6,get_sourc:9,get_source_seg:[5,11],get_stat:6,get_surrounding_block:6,get_vers:7,getitem:[6,27],github:0,give:9,given:[3,6,7,9,10,11,14],global:[2,10,11],global_:10,globals_:11,go:[0,11,25],good:14,got:25,gotten:9,gpu:[14,22,30,31],gradient:[14,22,31],graph:11,great:[0,19],green:13,group:[3,14,21],h:25,ha:[2,9,11,14,23,25,28,30],hacki:6,handl:22,happen:[15,30],have:[0,14,19,28],head:23,hello:26,help:[14,25],helper:[3,8],here:[2,6,25],hidden:24,hierarchi:10,histori:10,hood:22,how:[10,14,22,23,24,27,29,30,31],howev:2,http:0,i:[2,3,10,14,25],id:9,ident:[3,14,15,21,27],identifi:10,if_:[3,15],ifev:[3,15,21,26],iff:10,ifinf:[3,15,21,26],ifinmod:[3,15],iftrain:[3,15,21,23,26],ignor:14,ignore_grad:14,ignore_scop:[3,6,14,18],iim:[3,15],imag:[13,30],implement:[14,24],importdump:[2,3,14],in_featur:25,includ:[2,9,14,28,29],incorpor:25,increment:11,increment_same_name_var:11,indent:6,index:14,indic:[10,14],individu:23,infer:[3,14,15,21,22,26,28,30],infer_appli:[3,14,15,22,25,26],infer_pipelin:28,inform:[6,14,25],initi:[2,14,28],inlin:[6,14],inline_wrap:14,innov:[0,19],input:[3,9,13,14,22,23,25,26],insert:9,insid:[15,25],inspect:[6,9,14,25,31],inspector:[14,19,20],instanc:[2,22,23,24,28],instead:[2,3,6,14,18],interact:[2,25,29,31],interest:0,intern:22,introduct:19,invers:[3,14],io:0,ipython:[2,9,10,27],is_glob:10,isinst:[9,11,18],issu:0,item:[0,3,10,14,16,22,26],iter:[14,22,28],its:[10,11,14,25],itself:6,jpg:22,json:[2,8],json_seri:8,just:[2,3,14],keep:23,kei:9,keyword:[0,14,19],know:21,kwarg:[6,14],l1:24,l2:24,lab:[0,19],lambda:[3,14,15,23,24,25,26],larg:2,larger:6,largest:6,last:[2,9,13,14],layer1:28,layer2:28,layer:[0,14,19,25],learn:[0,19,22,23,24,28,29,30,31],len:[2,22],length:[13,23],let:25,level:[2,6,10,23,25],lf1:[0,19],licens:19,like:[2,22,30],limit:2,lin:24,line:[6,9,10,13,14,25],linear:[0,24,25],lineno:[5,6,10,11],list:[2,3,7,9,10,11,13,14,15,22,25,26,28,29],liter:[3,6,14,15],live:11,load:[0,2,3,8,14,19,21,22,23,28,30],load_data:2,load_funct:8,load_imag:[23,30],load_json:8,loader:[8,14],loc:9,local:11,locat:[6,9],log10:24,longtensor:25,look:[0,2,6,10],lookup:[28,30],loop:[10,22,28],loss:[0,19,23,28],lower:26,lr:28,macro:23,made:[6,14],mai:[0,19],main:[0,10,12],maintain:9,make:[0,13,19,21,25,28],make_bold:13,make_green:13,manual:0,map:14,mark:[3,8,14],match:[3,6,12,14,15,25],math:24,md:0,mean:[2,3,14,23],messi:2,method:[6,14,21,26],might:[2,26],minim:31,minus100:24,minusx:[24,26,27],mlp:24,mml:24,mnist:0,mode:[3,14,15,22],model:[0,2,14,19,28,30],model_pass:23,modifi:9,modul:[3,6,7,8,9,10,11,14,18,19,21,23,24,27,29,30],module_nam:[6,10],more:[2,3,6,14,23,31],most:[10,23,30],mother:12,mother_transform:12,move:[3,14,23,25],mpiler:25,much:31,multi:[6,13,31],multipl:[2,14,22,24,28],multiprocess:14,must:[2,6,14,23],my:2,my_classifi:[22,30],my_classifier_transform:[23,30],my_pipelin:[0,2,28,29],myfil:2,myfunct:6,mykei:9,myload:2,mypipelin:29,mypytorchlay:28,mysav:2,mytransform:2,n:[6,10,11,14],n_final_row:13,n_in:24,n_initial_row:13,n_out:24,n_to_add:2,name:[2,3,6,7,10,11,14,15,30],namenotfound:10,natur:22,need:[2,8,14,19],nest:[10,27,28],never:14,next:[22,23,24,27,28,29,30,31],nextmodul:6,nlp:0,nn:[0,14,24,25],node:[5,7,10,11],nodetyp:11,nodevisitor:11,non:9,non_init_caller_frameinfo:6,none:[3,6,8,10,11,14,15,18],normal:[2,9,14],not_found:2,note:[2,6],notebook:[2,31],noth:[3,14,21],now:2,np:[2,11,18,24,26],nput:25,npy:2,nth:23,num_embed:25,num_work:[22,25,28],number:[6,10,11,13],numpi:[2,18,24],o:11,object:[6,9,10,11,14,22,26],occur:15,offset:[6,11],often:26,one:[2,3,10,13,14,15,23,25,30],onli:[2,11,23,26],open:[2,23,26],open_fil:26,oper:23,optim:28,option:[3,6,8,11,14,15],order:14,ordereddict:14,origin:[6,9],other:[14,15],otherwis:[3,14,15],out:[6,9,10,11,15,18,23,24],out_featur:25,outer:6,outer_caller_frameinfo:6,output:[3,14,15,22,23,30],over:[13,14,23,28],overlap:9,overrid:14,overwrit:[3,14],own:[2,25],p:25,packag:[0,2,3,7,14,19,25,29],packagefind:[19,20],pad:13,padl:[2,20,23,24,25,26,27,29,30,31],padl_value_0:2,page:21,parallel:[3,14],param:14,paramet:[2,3,6,7,8,9,10,11,12,13,14,15,18,29],parent:[2,18],parenthes:23,pars:[7,11],part:[9,14,21,22,25,30],parti:2,particular:24,pass:[0,2,3,14,19,22],patch:18,patchedmodul:18,path:[2,3,8,14,23,30],pathlib:[2,3,8,14],pd_call_in_mod:14,pd_debug:[21,25],pd_devic:14,pd_forward:[14,22,30],pd_forward_device_check:14,pd_get_load:14,pd_group:14,pd_layer:[14,28],pd_name:[14,15],pd_np:18,pd_paramet:[14,28],pd_post_load:14,pd_postprocess:[14,30],pd_pre_sav:14,pd_preprocess:[14,30],pd_save:14,pd_stage:14,pd_to:[14,28],pd_varnam:14,pd_zip_sav:14,perform:[3,14,15],pick:2,piec:[10,11],pil:23,piltotensor:23,pip:0,pipelin:[0,14,19,21,22,24,25,27,28,29,30],pleas:0,pluson:2,plustwo:2,posit:[5,9,11,25],possibl:[2,6,14,24,28],post:[0,14,19,30],post_load:14,postprocess:[3,14,19,21,22,23,25],potenti:[2,6],power:23,pre:[0,9,14,19,30],pre_sav:14,preced:13,predict:[23,28],prefer:0,prepar:0,preprocess:[3,14,19,21,22,23,25,28,31],preprocess_imag:23,pretti:27,prevent:[2,3,14],previous:2,print:[6,11,13,14,19,21,25,29],print_util:[19,20],process:[0,2,14,19,22,30,31],produc:25,progress:22,propag:14,properti:[6,8,10,14],provid:[2,23,25],pt:2,put:9,put_into_cach:9,py:[2,29],pypi:2,python:[0,2,5,6,10,11,19,23,24,29],pytorch:[0,14,19,21,22,23,24,27,29,30],q:25,quit:25,r:25,rais:[3,6,14,25],rand:18,random:18,randomresizedcrop:23,randomrot:23,rang:2,ransform:25,rather:[2,6,14],re:[0,19,23],reach:25,read:[2,21,22,26,27,31],read_from_path:26,readabl:30,recent:10,recreat:2,recurs:[3,14,25],ref:25,refer:21,regardless:15,relev:25,relu:24,rememb:28,remov:[3,6,14,22],renam:[2,11],rename_loc:11,repeat:[2,23,25],repl:9,replac:[9,10],replace_cach:9,replace_star_import:10,replacestr:9,repres:[10,11],reproduc:31,requir:[2,6],reshap:30,resiz:23,resnet18:[23,30],respect:[3,11,14,26],respons:[2,30],rest:6,result:[2,3,6,9,14,23],retriev:25,return_loc:6,return_parti:10,revers:2,roll:23,rollout:[3,14],row:6,rstring:9,run:25,runtimeerror:25,s:[3,6,7,8,9,10,14,15,21,22,24,28,29,30],same:[3,5,6,9,10,11,14,16,21,23,25,28],save:[1,3,8,14,19,21,22,31],save_al:8,save_funct:8,save_json:8,saver:8,scope:[3,6,10,11,14,18],scoped_nam:11,scopednam:[10,11],scopelist:10,search:[10,11,14],second:[2,3,10,14,23],section:[9,22,23,24,27,28,29,30,31],see:[0,2,3,6,14,22],segment:[5,6,10,11],segment_typ:6,self:[2,10,14,24],send:[14,22,28,31],sentiment:0,sequenc:[13,14,23],seri:14,serial:[3,14,19,20],session:[2,29],set:[2,8,11,14,22],settrac:6,shape:25,should:[2,3,6,8,14],show:[22,25],shown:25,similar:2,simpl:0,simpli:[2,14],sin:24,sinc:25,singl:[0,14,19,22,23],size:[22,25],slice:[19,21,29,31],slower:0,so:[10,23,25],some:[2,23,25,28],somemodul:11,someobject:2,someth:[2,26],sometim:2,soon:6,sourc:[5,6,7,9,10,11,14],sourceget:[19,20],space:[6,13],special:[23,26,30],specifi:[3,9,10,14,22],split:[2,10],split_cal:10,stack:6,stage:[14,19,21,22,23,25],stand:30,standard:[0,19],star:[2,10],start:[3,10,13,14,19,21,25],start_left:13,state_dict:28,statement:[2,3,6,10,14,15,25],step:[14,23,28],stop:31,store:[2,3,8,28,29],str:[2,3,6,8,9,10,11,13,14,15],string:[3,7,8,9,10,11,13,14],sub:[9,11,14,23,27],subclass:10,substr:9,subval:2,successfulli:15,suffix:2,suggest:30,superimpos:13,support:[0,2,22],surround:[6,10],sy:6,symbol:[2,10],symfind:[6,11,19,20],t1:[14,23,27],t2:[14,23,27],t3:[14,23,27],t4:27,t5:27,t:[2,3,6,13,14,15,18,23,25,26],take:[13,23],taken:[9,24],target:[6,23],target_mod:[3,15],tensor:[0,3,14,22],text:[0,2],textcorpu:2,than:2,them:[2,3,14,21,23,28],thereof:[3,14],thi:[2,3,6,9,10,11,13,14,15,22,23,24,25,27,28,29],thing:[2,3,8,9,10,11],third:2,those:[2,11,28,30],three:[22,23],through:[11,22,23],thu:[2,23],time:2,to_col:9,to_lin:9,to_tensor:25,toarrai:2,togeth:27,too:[24,27,29],top:[10,13,25],topic:19,topk:0,toplevel:[3,6,10,14,18],topolog:[0,19],torch:[0,14,24,25,28],torchmoduletransform:14,torchvis:[23,30],totensor:[23,30],tqdm:22,trace:6,trace_thi:6,tracefunc:6,track:2,train:[3,14,15,21,22,26,28,30],train_appli:[14,22,25,28],train_data:28,train_model:28,train_pipelin:28,training_pipelin:23,transform:[0,3,10,12,15,16,18,19,20,21,27,29,30],transform_or_modul:[3,14],transpar:[13,31],tree:[0,10,11],tupl:[2,3,6,10,11,14,15,23],turn:14,tvt:23,two:2,txt:[2,29],type:[6,11],typic:14,u:25,uit:25,unbatch:[0,3,21,23,30],unbatchifi:[3,14],under:[0,22],undo:2,unind:6,union:[3,14,15],uniqu:14,unscop:10,unsqueez:[3,14],until:25,up:[2,10,25],updat:22,us:[0,2,3,6,7,8,9,10,11,13,14,15,18,19,21,22,23,24,25,26,27,30,31],usag:[0,19],use_replace_cach:9,user:[0,19,25],usual:30,util:[6,7,13,14,19,20,23,28],util_transform:[19,20],v:13,val:[2,3,8],valu:[3,8,9,10,13,21],valueerror:6,var2mod:[19,20],var_nam:10,variabl:[10,11,14,25],variou:[9,10],varnam:[8,10],veri:2,version:[0,2,7,9,10,14,19,20,29],via:[2,14,27,28,29,30],view:23,visibl:13,visible_len:13,visitor:11,w:25,wa:[0,6,14,19,25],wai:[10,25],want:[2,26],we:[2,25,30],well:10,were:[2,10],what:[14,26,30],whatev:14,when:[2,3,14,15,24,25,28,29],where:[6,9,11,13,25],wherea:30,which:[2,3,6,9,10,11,14,22,23,29],whole:[14,31],whose:[3,14],wide:6,within:[6,9,10,14,28],without:31,word:2,word_index:2,wordindex:2,work:[27,28,31],worker:22,workflow:[30,31],worri:31,would:[2,9,10,23],wrap:[2,3,14,19,20,24],wrap_typ:14,wrappe:[3,18],wrapper:[3,18,24],write:[0,2,3,14,19],written:10,wrongdeviceerror:12,x1:14,x2:14,x3:14,x:[0,2,3,9,10,11,13,14,15,23,24,25,26,27,30],xxxx:9,xxxxxaxxxxxxxxxxxxxxxxxxxx:9,xxxxxxxxxxx:9,xxxxxxxxxxxxxb:9,xxxxxxxxxxxxxbxxxx:9,y:[11,13,23,24,27],you:[0,2,19,23,26,31],your:[2,19,21,31],z:[11,23],zero_grad:28,zip:[3,14]},titles:["Introduction","Advanced Topics","Saving","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.ast_utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.inspector</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.packagefinder</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.serialize</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.sourceget</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.symfinder</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.dumptools.var2mod</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.exceptions</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.print_utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.transforms</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.util_transforms</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.utils</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.version</span></code>","<code class=\"docutils literal notranslate\"><span class=\"pre\">padl.wrap</span></code>","Welcome to PADL\u2019s documentation!","API Documentation","Usage","Applying Transforms to Data","Combining Transforms into Pipelines","Creating Transforms","Debugging your Transforms","Extras","Printing and Slicing","Using PyTorch Modules with Transforms","Saving and Loading","Stages: Preprocess, Forward and Postprocess","<em>Transforms</em> and <em>Pipelines</em>"],titleterms:{"import":21,"try":0,The:26,access:28,advanc:1,an:23,anyth:21,api:20,appli:[22,26],ast_util:5,automat:28,block:2,build:23,colab:0,combin:23,compos:23,content:[1,19,20,21],contribut:0,convert:23,creat:24,custom:2,data:22,debug:25,defin:2,depend:26,devic:28,dict:28,dictionari:23,differ:23,document:[19,20],doe:2,dumptool:[4,5,6,7,8,9,10,11],exampl:[23,25],except:[12,26],extra:26,extract:23,first:0,forward:[23,30],from:[2,21,23],gener:23,get:0,group:23,handl:26,how:2,imag:23,inspector:6,instal:0,introduct:0,item:23,layer:28,licens:0,load:29,loop:2,map:23,mode:26,model:23,modul:[2,28],multipl:23,mutat:2,need:21,nest:2,notebook:0,object:2,other:2,out:0,packagefind:7,padl:[0,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,28],parallel:23,paramet:28,pass:23,pipelin:[23,31],post:23,postprocess:30,pre:23,preprocess:30,print:27,print_util:13,process:23,program:0,pytorch:[2,28],resourc:0,rollout:23,s:19,same:26,sampl:23,save:[2,28,29],scope:2,serial:[2,8],share:28,slice:27,sourceget:9,stage:30,start:0,state:28,symfind:10,target:2,tensor:23,topic:1,train:23,transform:[2,14,22,23,24,25,26,28,31],us:28,usag:21,util:[16,26],util_transform:15,valu:2,var2mod:11,variabl:2,version:[17,23],weight:28,welcom:19,what:2,within:2,work:2,wrap:18,you:21,your:[0,25]}})
\ No newline at end of file
diff --git a/docs/unstable/usage.html b/docs/unstable/usage.html
index a5975a69..e998b340 100644
--- a/docs/unstable/usage.html
+++ b/docs/unstable/usage.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/apply.html b/docs/unstable/usage/apply.html
index b480d1fb..935248c6 100644
--- a/docs/unstable/usage/apply.html
+++ b/docs/unstable/usage/apply.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/combining_transforms.html b/docs/unstable/usage/combining_transforms.html
index 50f696b3..deb8a0bb 100644
--- a/docs/unstable/usage/combining_transforms.html
+++ b/docs/unstable/usage/combining_transforms.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/creating_transforms.html b/docs/unstable/usage/creating_transforms.html
index 4c765a17..29edb777 100644
--- a/docs/unstable/usage/creating_transforms.html
+++ b/docs/unstable/usage/creating_transforms.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/debugging_your_transforms.html b/docs/unstable/usage/debugging_your_transforms.html
index a46c4957..7612eedf 100644
--- a/docs/unstable/usage/debugging_your_transforms.html
+++ b/docs/unstable/usage/debugging_your_transforms.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/extras.html b/docs/unstable/usage/extras.html
index 5975ba9c..43d2c68e 100644
--- a/docs/unstable/usage/extras.html
+++ b/docs/unstable/usage/extras.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/print_slice.html b/docs/unstable/usage/print_slice.html
index 2bb1c639..4a0bf0cd 100644
--- a/docs/unstable/usage/print_slice.html
+++ b/docs/unstable/usage/print_slice.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/pytorch.html b/docs/unstable/usage/pytorch.html
index dca0a903..cc36c2b9 100644
--- a/docs/unstable/usage/pytorch.html
+++ b/docs/unstable/usage/pytorch.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/saving.html b/docs/unstable/usage/saving.html
index 71e8535a..37750561 100644
--- a/docs/unstable/usage/saving.html
+++ b/docs/unstable/usage/saving.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/stages.html b/docs/unstable/usage/stages.html
index b698bde3..7e8a0a32 100644
--- a/docs/unstable/usage/stages.html
+++ b/docs/unstable/usage/stages.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/docs/unstable/usage/transform.html b/docs/unstable/usage/transform.html
index 38f2d159..7db0889f 100644
--- a/docs/unstable/usage/transform.html
+++ b/docs/unstable/usage/transform.html
@@ -45,6 +45,7 @@
 <li class="toctree-l2"><a class="reference internal" href="../README.html#getting-started">Getting Started</a><ul>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#installation">Installation</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#your-first-padl-program">Your first PADL program</a></li>
+<li class="toctree-l3"><a class="reference internal" href="../README.html#try-out-padl-in-colab-notebooks">Try out PADL in Colab notebooks</a></li>
 <li class="toctree-l3"><a class="reference internal" href="../README.html#resources">Resources</a></li>
 </ul>
 </li>
diff --git a/img/schematic.png b/img/schematic.png
new file mode 100644
index 00000000..7377dc44
Binary files /dev/null and b/img/schematic.png differ
diff --git a/notebooks/01_MNIST_using_padl.ipynb b/notebooks/01_MNIST_using_padl.ipynb
index d521dd58..9d8161d1 100644
--- a/notebooks/01_MNIST_using_padl.ipynb
+++ b/notebooks/01_MNIST_using_padl.ipynb
@@ -1,5 +1,23 @@
 {
  "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "49b4084e",
+   "metadata": {},
+   "source": [
+    "# Install `PADL`\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "64f0a01e",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "!python -m pip install git+https://github.com/lf1-io/padl.git"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -7,15 +25,19 @@
    "metadata": {},
    "outputs": [],
    "source": [
-    "# You may also need to install torchvision and matplotlib\n",
-    "# !pip install matplotlib\n",
-    "# !pip install torchvision==0.11.0\n",
-    "\n",
     "# These might be useful if there are errors regarding ipywidgets while downloading torchvision.datasets\n",
     "# !pip install ipywidgets\n",
     "# !jupyter nbextension enable --py widgetsnbextension"
    ]
   },
+  {
+   "cell_type": "markdown",
+   "id": "0d843846",
+   "metadata": {},
+   "source": [
+    "----"
+   ]
+  },
   {
    "cell_type": "markdown",
    "id": "a1fcbb10",
@@ -799,9 +821,9 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "tenen_env",
+   "display_name": "Python 3",
    "language": "python",
-   "name": "tenen_env"
+   "name": "python3"
   },
   "language_info": {
    "codemirror_mode": {
diff --git a/notebooks/02_nlp_example.ipynb b/notebooks/02_nlp_example.ipynb
index c0fc1596..75b4e98e 100644
--- a/notebooks/02_nlp_example.ipynb
+++ b/notebooks/02_nlp_example.ipynb
@@ -1,5 +1,27 @@
 {
  "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "2b9e8d97",
+   "metadata": {},
+   "source": [
+    "# Install `PADL` and clone git repo for `PADL`"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "0aacc791",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "!python -m pip install git+https://github.com/lf1-io/padl.git\n",
+    "    \n",
+    "    \n",
+    "# Clone of PADL repo is required for the data for this notebook\n",
+    "!git clone https://github.com/lf1-io/padl.git"
+   ]
+  },
   {
    "cell_type": "code",
    "execution_count": null,
@@ -9,7 +31,7 @@
    "source": [
     "from IPython.display import Image\n",
     "\n",
-    "Image('../img/schematic.png', width=300)"
+    "Image('padl/img/schematic.png', width=300)"
    ]
   },
   {
@@ -25,8 +47,8 @@
     "import re\n",
     "import json\n",
     "\n",
-    "with open('data/lm/train.json') as f: train_data = json.load(f)\n",
-    "with open('data/lm/valid.json') as f: valid_data = json.load(f)\n",
+    "with open('padl/notebooks/data/lm/train.json') as f: train_data = json.load(f)\n",
+    "with open('padl/notebooks/data/lm/valid.json') as f: valid_data = json.load(f)\n",
     "    \n",
     "WORDS = []\n",
     "for x in train_data:\n",
@@ -270,7 +292,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3 (ipykernel)",
+   "display_name": "Python 3",
    "language": "python",
    "name": "python3"
   },
@@ -284,7 +306,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.2"
+   "version": "3.8.8"
   }
  },
  "nbformat": 4,
diff --git a/notebooks/03_Sentiment_Analysis_with_padl.ipynb b/notebooks/03_Sentiment_Analysis_with_padl.ipynb
index b731d8f2..72b0ada6 100644
--- a/notebooks/03_Sentiment_Analysis_with_padl.ipynb
+++ b/notebooks/03_Sentiment_Analysis_with_padl.ipynb
@@ -2,25 +2,60 @@
  "cells": [
   {
    "cell_type": "markdown",
-   "id": "3dc08821",
+   "id": "e871ce00",
    "metadata": {},
    "source": [
-    "## Sentiment Analysis with Padl\n",
-    "This notebook implements and trains a Sentiment Monitor using `padl`. First, let's make sure we have all the requirements installed."
+    "## Install `PADL` and `sentencepiece`"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 1,
-   "id": "8bcc632c",
+   "execution_count": null,
+   "id": "53fbce98",
    "metadata": {},
    "outputs": [],
    "source": [
-    "#!pip install numpy\n",
-    "#!pip install pandas\n",
-    "#!pip install sentencepiece\n",
-    "#!pip install matplotlib\n",
-    "#!pip install torch"
+    "!python -m pip install git+https://github.com/lf1-io/padl.git\n",
+    "\n",
+    "!pip install sentencepiece"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e41f55ea",
+   "metadata": {},
+   "source": [
+    "## Download `Sentiment140` dataset with 1.6 million tweets"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "e8a8253c",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Make data directory if it doesn't exist\n",
+    "!mkdir -p data\n",
+    "!wget -nc https://nyc3.digitaloceanspaces.com/ml-files-distro/v1/sentiment-analysis-is-bad/data/training.1600000.processed.noemoticon.csv.zip -P data\n",
+    "!unzip -n -d data data/training.1600000.processed.noemoticon.csv.zip"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e642e44f",
+   "metadata": {},
+   "source": [
+    "----"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "3dc08821",
+   "metadata": {},
+   "source": [
+    "## Sentiment Analysis with Padl\n",
+    "This notebook implements and trains a Sentiment Monitor using `padl`."
    ]
   },
   {
@@ -44,7 +79,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 2,
+   "execution_count": null,
    "id": "21f5ffd4",
    "metadata": {},
    "outputs": [],
@@ -56,6 +91,7 @@
     "import sentencepiece\n",
     "import torch\n",
     "import matplotlib.pyplot as plt\n",
+    "import random\n",
     "\n",
     "import padl\n",
     "from padl import transform, batch, unbatch, same, identity\n",
@@ -74,25 +110,21 @@
    "metadata": {},
    "source": [
     "### The data\n",
-    "The dataset used in this notebook is `Sentiment140`, which contains 1.6 million of tweets classified as negative (0) or positive (4). The dataset can be download from kaggle:\n",
-    "\n",
-    "https://www.kaggle.com/kazanova/sentiment140\n",
-    "\n",
-    "We rename the file to `data.csv`, we shuffle it and subsample the 10% of it to train faster along that data subset."
+    "The dataset used in this notebook is `Sentiment140`, which contains 1.6 million of tweets classified as negative (0) or positive (4). "
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 3,
+   "execution_count": null,
    "id": "eca88ba8",
    "metadata": {},
    "outputs": [],
    "source": [
     "data = pandas.read_csv(\n",
-    "    'data.csv',\n",
+    "    \"data/training.1600000.processed.noemoticon.csv\",\n",
     "    header=None,\n",
-    "    sep=',',\n",
-    ").sample(frac=0.1, random_state=0).reset_index(drop=True)"
+    "    encoding='latin-1'\n",
+    ")"
    ]
   },
   {
@@ -105,165 +137,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": null,
    "id": "facedc48",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "<div>\n",
-       "<style scoped>\n",
-       "    .dataframe tbody tr th:only-of-type {\n",
-       "        vertical-align: middle;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe tbody tr th {\n",
-       "        vertical-align: top;\n",
-       "    }\n",
-       "\n",
-       "    .dataframe thead th {\n",
-       "        text-align: right;\n",
-       "    }\n",
-       "</style>\n",
-       "<table border=\"1\" class=\"dataframe\">\n",
-       "  <thead>\n",
-       "    <tr style=\"text-align: right;\">\n",
-       "      <th></th>\n",
-       "      <th>0</th>\n",
-       "      <th>1</th>\n",
-       "      <th>2</th>\n",
-       "      <th>3</th>\n",
-       "      <th>4</th>\n",
-       "      <th>5</th>\n",
-       "    </tr>\n",
-       "  </thead>\n",
-       "  <tbody>\n",
-       "    <tr>\n",
-       "      <th>0</th>\n",
-       "      <td>0</td>\n",
-       "      <td>2204444171</td>\n",
-       "      <td>Wed Jun 17 02:14:00 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>einmensch</td>\n",
-       "      <td>wants to compete! i want hard competition! i w...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>1</th>\n",
-       "      <td>0</td>\n",
-       "      <td>2017152437</td>\n",
-       "      <td>Wed Jun 03 07:56:34 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>keithmorrison</td>\n",
-       "      <td>It seems we are stuck on the ground in Amarill...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>2</th>\n",
-       "      <td>0</td>\n",
-       "      <td>1967043408</td>\n",
-       "      <td>Fri May 29 18:52:13 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>PunkieDory</td>\n",
-       "      <td>where the f are my pinking shears? rarararrrar...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>3</th>\n",
-       "      <td>0</td>\n",
-       "      <td>2208721054</td>\n",
-       "      <td>Wed Jun 17 09:32:48 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>DYkEY_tYPE</td>\n",
-       "      <td>0ff t0 tHE MEEtiN..  i HAtE WhEN PPl V0lUNtEER...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>4</th>\n",
-       "      <td>4</td>\n",
-       "      <td>2018731586</td>\n",
-       "      <td>Wed Jun 03 10:25:27 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>BlueSmartiies</td>\n",
-       "      <td>@ reply me pls</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>5</th>\n",
-       "      <td>0</td>\n",
-       "      <td>2295875426</td>\n",
-       "      <td>Tue Jun 23 08:29:12 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>abtony</td>\n",
-       "      <td>@bharathy_99: Jazz in India is just Honda stra...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>6</th>\n",
-       "      <td>4</td>\n",
-       "      <td>1965198843</td>\n",
-       "      <td>Fri May 29 15:30:08 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>alitheoctopus</td>\n",
-       "      <td>aaaaaaaaaaah, met a boy. he seems nice. im hap...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>7</th>\n",
-       "      <td>4</td>\n",
-       "      <td>2051339641</td>\n",
-       "      <td>Fri Jun 05 21:42:52 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>RooookieP</td>\n",
-       "      <td>@jonasbrothers http://twitpic.com/6q1om - Spor...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>8</th>\n",
-       "      <td>4</td>\n",
-       "      <td>1969949901</td>\n",
-       "      <td>Sat May 30 01:51:05 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>namakemono49</td>\n",
-       "      <td>@saragarth Not bad, bit grumpy cause of exams ...</td>\n",
-       "    </tr>\n",
-       "    <tr>\n",
-       "      <th>9</th>\n",
-       "      <td>0</td>\n",
-       "      <td>1694969873</td>\n",
-       "      <td>Mon May 04 04:46:43 PDT 2009</td>\n",
-       "      <td>NO_QUERY</td>\n",
-       "      <td>Exercise999</td>\n",
-       "      <td>@luke_redroot can't watch it  what is it?</td>\n",
-       "    </tr>\n",
-       "  </tbody>\n",
-       "</table>\n",
-       "</div>"
-      ],
-      "text/plain": [
-       "   0           1                             2         3              4  \\\n",
-       "0  0  2204444171  Wed Jun 17 02:14:00 PDT 2009  NO_QUERY      einmensch   \n",
-       "1  0  2017152437  Wed Jun 03 07:56:34 PDT 2009  NO_QUERY  keithmorrison   \n",
-       "2  0  1967043408  Fri May 29 18:52:13 PDT 2009  NO_QUERY     PunkieDory   \n",
-       "3  0  2208721054  Wed Jun 17 09:32:48 PDT 2009  NO_QUERY     DYkEY_tYPE   \n",
-       "4  4  2018731586  Wed Jun 03 10:25:27 PDT 2009  NO_QUERY  BlueSmartiies   \n",
-       "5  0  2295875426  Tue Jun 23 08:29:12 PDT 2009  NO_QUERY         abtony   \n",
-       "6  4  1965198843  Fri May 29 15:30:08 PDT 2009  NO_QUERY  alitheoctopus   \n",
-       "7  4  2051339641  Fri Jun 05 21:42:52 PDT 2009  NO_QUERY      RooookieP   \n",
-       "8  4  1969949901  Sat May 30 01:51:05 PDT 2009  NO_QUERY   namakemono49   \n",
-       "9  0  1694969873  Mon May 04 04:46:43 PDT 2009  NO_QUERY    Exercise999   \n",
-       "\n",
-       "                                                   5  \n",
-       "0  wants to compete! i want hard competition! i w...  \n",
-       "1  It seems we are stuck on the ground in Amarill...  \n",
-       "2  where the f are my pinking shears? rarararrrar...  \n",
-       "3  0ff t0 tHE MEEtiN..  i HAtE WhEN PPl V0lUNtEER...  \n",
-       "4                                    @ reply me pls   \n",
-       "5  @bharathy_99: Jazz in India is just Honda stra...  \n",
-       "6  aaaaaaaaaaah, met a boy. he seems nice. im hap...  \n",
-       "7  @jonasbrothers http://twitpic.com/6q1om - Spor...  \n",
-       "8  @saragarth Not bad, bit grumpy cause of exams ...  \n",
-       "9          @luke_redroot can't watch it  what is it?  "
-      ]
-     },
-     "execution_count": 6,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "data.head(10)"
    ]
@@ -278,7 +155,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 7,
+   "execution_count": null,
    "id": "b195cbfc",
    "metadata": {},
    "outputs": [],
@@ -286,6 +163,7 @@
     "data = data.drop(labels=[1, 2, 3, 4], axis=1).rename(columns={0: 'label', 5: 'text'})\n",
     "data['label'] = data['label'].apply(lambda x: int(x/4))\n",
     "data_list = list(zip(data['text'], data['label']))\n",
+    "random.shuffle(data_list)\n",
     "train_data = data_list[:-TRAIN_TEST_SPLIT]\n",
     "valid_data = data_list[-TRAIN_TEST_SPLIT:]"
    ]
@@ -300,7 +178,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 8,
+   "execution_count": null,
    "id": "7dd7b734",
    "metadata": {},
    "outputs": [],
@@ -330,347 +208,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 9,
+   "execution_count": null,
    "id": "a696a9bc",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "sentencepiece_trainer.cc(177) LOG(INFO) Running command: --input=corpus.txt --model_prefix=110d0265-edda-4776-b57d-c319336c1e8e --vocab_size=5000 --character_coverage=1.0 --model_type=bpe \n",
-      "sentencepiece_trainer.cc(77) LOG(INFO) Starts training with : \n",
-      "trainer_spec {\n",
-      "  input: corpus.txt\n",
-      "  input_format: \n",
-      "  model_prefix: 110d0265-edda-4776-b57d-c319336c1e8e\n",
-      "  model_type: BPE\n",
-      "  vocab_size: 5000\n",
-      "  self_test_sample_size: 0\n",
-      "  character_coverage: 1\n",
-      "  input_sentence_size: 0\n",
-      "  shuffle_input_sentence: 1\n",
-      "  seed_sentencepiece_size: 1000000\n",
-      "  shrinking_factor: 0.75\n",
-      "  max_sentence_length: 4192\n",
-      "  num_threads: 16\n",
-      "  num_sub_iterations: 2\n",
-      "  max_sentencepiece_length: 16\n",
-      "  split_by_unicode_script: 1\n",
-      "  split_by_number: 1\n",
-      "  split_by_whitespace: 1\n",
-      "  split_digits: 0\n",
-      "  treat_whitespace_as_suffix: 0\n",
-      "  allow_whitespace_only_pieces: 0\n",
-      "  required_chars: \n",
-      "  byte_fallback: 0\n",
-      "  vocabulary_output_piece_score: 1\n",
-      "  train_extremely_large_corpus: 0\n",
-      "  hard_vocab_limit: 1\n",
-      "  use_all_vocab: 0\n",
-      "  unk_id: 0\n",
-      "  bos_id: 1\n",
-      "  eos_id: 2\n",
-      "  pad_id: -1\n",
-      "  unk_piece: <unk>\n",
-      "  bos_piece: 
\n",
-      "  eos_piece: 
\n",
-      "  pad_piece: <pad>\n",
-      "  unk_surface:  ⁇ \n",
-      "}\n",
-      "normalizer_spec {\n",
-      "  name: nmt_nfkc\n",
-      "  add_dummy_prefix: 1\n",
-      "  remove_extra_whitespaces: 1\n",
-      "  escape_whitespaces: 1\n",
-      "  normalization_rule_tsv: \n",
-      "}\n",
-      "denormalizer_spec {}\n",
-      "trainer_interface.cc(329) LOG(INFO) SentenceIterator is not specified. Using MultiFileSentenceIterator.\n",
-      "trainer_interface.cc(178) LOG(INFO) Loading corpus: corpus.txt\n",
-      "trainer_interface.cc(385) LOG(INFO) Loaded all 150000 sentences\n",
-      "trainer_interface.cc(400) LOG(INFO) Adding meta_piece: <unk>\n",
-      "trainer_interface.cc(400) LOG(INFO) Adding meta_piece: 
\n",
-      "trainer_interface.cc(400) LOG(INFO) Adding meta_piece: 
\n",
-      "trainer_interface.cc(405) LOG(INFO) Normalizing sentences...\n",
-      "trainer_interface.cc(466) LOG(INFO) all chars count=11069142\n",
-      "trainer_interface.cc(487) LOG(INFO) Alphabet size=659\n",
-      "trainer_interface.cc(488) LOG(INFO) Final character coverage=1\n",
-      "trainer_interface.cc(520) LOG(INFO) Done! preprocessed 150000 sentences.\n",
-      "trainer_interface.cc(526) LOG(INFO) Tokenizing input sentences with whitespace: 150000\n",
-      "trainer_interface.cc(537) LOG(INFO) Done! 234894\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=211861 min_freq=198\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=65098 size=20 all=7429 active=2307 piece=or\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=37552 size=40 all=9164 active=4042 piece=ow\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=24301 size=60 all=11162 active=6039 piece=as\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=17488 size=80 all=12879 active=7756 piece=!!\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=14183 size=100 all=14689 active=9566 piece=all\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=14070 min_freq=975\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=11842 size=120 all=16786 active=2936 piece=day\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=9300 size=140 all=18096 active=4246 piece=ry\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=8146 size=160 all=19958 active=6108 piece=ast\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=6957 size=180 all=21673 active=7823 piece=nt\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=6166 size=200 all=23685 active=9834 piece=▁J\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=6163 min_freq=693\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=5691 size=220 all=25261 active=2687 piece=ag\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=5066 size=240 all=27265 active=4690 piece=▁aw\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=4618 size=260 all=29292 active=6717 piece=ice\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=4241 size=280 all=30264 active=7689 piece=te\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3915 size=300 all=31728 active=9152 piece=▁home\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=3876 min_freq=433\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3438 size=320 all=33416 active=3261 piece=▁U\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3255 size=340 all=34717 active=4562 piece=ive\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=3015 size=360 all=35727 active=5572 piece=▁then\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2751 size=380 all=37220 active=7065 piece=up\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2609 size=400 all=39146 active=8989 piece=▁Just\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=2605 min_freq=317\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2440 size=420 all=40200 active=3006 piece=▁thing\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2339 size=440 all=42004 active=4810 piece=▁tr\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2175 size=460 all=42904 active=5710 piece=ase\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=2047 size=480 all=44052 active=6857 piece=▁after\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1942 size=500 all=45223 active=8028 piece=▁gonna\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1941 min_freq=259\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1845 size=520 all=46451 active=3489 piece=▁:\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1773 size=540 all=47522 active=4560 piece=▁weekend\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1680 size=560 all=48580 active=5618 piece=▁V\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1605 size=580 all=49870 active=6908 piece=▁Oh\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1519 size=600 all=51402 active=8439 piece=▁wr\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1519 min_freq=210\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1448 size=620 all=52647 active=3797 piece=ix\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1407 size=640 all=53479 active=4629 piece=▁doing\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1342 size=660 all=54477 active=5627 piece=▁ur\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1287 size=680 all=55188 active=6338 piece=gg\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1251 size=700 all=56332 active=7482 piece=act\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1249 min_freq=181\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1214 size=720 all=57295 active=3694 piece=▁list\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1169 size=740 all=58399 active=4798 piece=▁where\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1136 size=760 all=59725 active=6124 piece=▁What\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1089 size=780 all=61063 active=7462 piece=▁into\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1055 size=800 all=62167 active=8566 piece=▁pretty\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=1051 min_freq=157\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=1010 size=820 all=63219 active=4158 piece=▁hey\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=980 size=840 all=63676 active=4614 piece=▁amazing\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=953 size=860 all=64330 active=5268 piece=▁coming\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=934 size=880 all=65333 active=6269 piece=ank\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=899 size=900 all=66433 active=7369 piece=gr\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=897 min_freq=138\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=867 size=920 all=67729 active=4449 piece=▁Ch\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=837 size=940 all=68186 active=4906 piece=ory\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=815 size=960 all=69142 active=5862 piece=ton\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=802 size=980 all=69915 active=6635 piece=haha\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=779 size=1000 all=70528 active=7248 piece=▁music\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=776 min_freq=126\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=759 size=1020 all=71438 active=4426 piece=▁Love\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=739 size=1040 all=72735 active=5723 piece=▁world\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=722 size=1060 all=73525 active=6513 piece=▁picture\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=705 size=1080 all=74601 active=7589 piece=▁gone\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=688 size=1100 all=75640 active=8628 piece=opping\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=687 min_freq=112\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=678 size=1120 all=76627 active=4742 piece=atur\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=657 size=1140 all=77640 active=5755 piece=▁family\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=631 size=1160 all=78602 active=6717 piece=▁dream\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=615 size=1180 all=79406 active=7521 piece=▁Its\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=598 size=1200 all=79786 active=7901 piece=▁eve\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=598 min_freq=104\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=580 size=1220 all=80523 active=4719 piece=▁ey\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=569 size=1240 all=81116 active=5312 piece=12\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=559 size=1260 all=81893 active=6089 piece=▁sec\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=545 size=1280 all=82556 active=6752 piece=▁stupid\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=531 size=1300 all=83918 active=8113 piece=▁following\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=530 min_freq=95\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=522 size=1320 all=84487 active=4765 piece=iously\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=511 size=1340 all=85392 active=5670 piece=uter\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=504 size=1360 all=86001 active=6279 piece=▁eating\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=496 size=1380 all=86717 active=6994 piece=illy\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=487 size=1400 all=87328 active=7605 piece=▁hurt\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=486 min_freq=88\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=477 size=1420 all=88351 active=5383 piece=▁alone\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=466 size=1440 all=89034 active=6066 piece=ual\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=458 size=1460 all=89852 active=6884 piece=▁Work\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=450 size=1480 all=90749 active=7781 piece=aught\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=443 size=1500 all=91611 active=8642 piece=▁taking\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=442 min_freq=81\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=435 size=1520 all=92112 active=5082 piece=aying\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=427 size=1540 all=92896 active=5866 piece=atter\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=420 size=1560 all=93548 active=6518 piece=▁email\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=411 size=1580 all=94280 active=7250 piece=▁defin\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=401 size=1600 all=94788 active=7758 piece=gan\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=400 min_freq=76\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=394 size=1620 all=95605 active=5469 piece=of\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=386 size=1640 all=96554 active=6418 piece=▁awake\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=379 size=1660 all=96934 active=6798 piece=▁res\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=375 size=1680 all=97391 active=7255 piece=ealous\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=369 size=1700 all=98097 active=7961 piece=▁write\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=368 min_freq=72\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=363 size=1720 all=98824 active=5631 piece=cr\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=358 size=1740 all=99350 active=6157 piece=▁eas\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=353 size=1760 all=99968 active=6775 piece=▁couple\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=348 size=1780 all=100451 active=7257 piece=▁near\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=342 size=1800 all=101180 active=7986 piece=▁ep\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=342 min_freq=68\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=337 size=1820 all=102005 active=5873 piece=▁Mo\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=334 size=1840 all=102589 active=6457 piece=▁sleeping\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=328 size=1860 all=102997 active=6865 piece=ages\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=323 size=1880 all=103743 active=7611 piece=▁Your\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=317 size=1900 all=104150 active=8018 piece=HH\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=317 min_freq=64\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=312 size=1920 all=105040 active=6070 piece=▁town\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=308 size=1940 all=105773 active=6803 piece=▁broken\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=303 size=1960 all=106254 active=7284 piece=▁means\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=299 size=1980 all=106902 active=7932 piece=arr\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=295 size=2000 all=107655 active=8685 piece=orld\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=295 min_freq=60\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=290 size=2020 all=108308 active=6011 piece=▁Tw\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=284 size=2040 all=108667 active=6370 piece=ls\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=280 size=2060 all=109200 active=6902 piece=que\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=277 size=2080 all=109732 active=7434 piece=andom\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=273 size=2100 all=110394 active=8096 piece=elt\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=273 min_freq=58\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=269 size=2120 all=110971 active=6051 piece=raph\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=265 size=2140 all=111842 active=6922 piece=▁bag\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=263 size=2160 all=112153 active=7233 piece=▁sunshine\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=259 size=2180 all=112656 active=7736 piece=ears\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=255 size=2200 all=113323 active=8403 piece=nic\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=255 min_freq=55\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=251 size=2220 all=113959 active=6240 piece=will\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=247 size=2240 all=114667 active=6948 piece=▁flu\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=243 size=2260 all=115072 active=7353 piece=Bl\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=241 size=2280 all=115614 active=7894 piece=).\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=239 size=2300 all=116141 active=8421 piece=▁saturday\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=238 min_freq=53\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=235 size=2320 all=116643 active=6307 piece=Sp\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=233 size=2340 all=117198 active=6862 piece=tweet\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=230 size=2360 all=117810 active=7474 piece=........\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=227 size=2380 all=118534 active=8198 piece=▁block\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=224 size=2400 all=119249 active=8913 piece=▁hu\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=224 min_freq=50\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=222 size=2420 all=119556 active=6254 piece=21\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=220 size=2440 all=120049 active=6747 piece=amb\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=218 size=2460 all=120721 active=7419 piece=ichael\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=216 size=2480 all=121245 active=7943 piece=▁roll\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=213 size=2500 all=121512 active=8210 piece=▁ma\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=213 min_freq=48\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=211 size=2520 all=122168 active=6700 piece=▁ner\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=210 size=2540 all=122751 active=7283 piece=▁exact\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=208 size=2560 all=123529 active=8061 piece=ari\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=206 size=2580 all=124158 active=8690 piece=▁front\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=203 size=2600 all=124697 active=9229 piece=ini\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=203 min_freq=46\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=201 size=2620 all=125256 active=6714 piece=▁ref\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=199 size=2640 all=125734 active=7192 piece=▁remind\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=196 size=2660 all=126187 active=7645 piece=ees\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=195 size=2680 all=127010 active=8468 piece=▁cake\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=193 size=2700 all=127369 active=8827 piece=▁realized\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=192 min_freq=44\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=191 size=2720 all=127867 active=6867 piece=▁nights\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=189 size=2740 all=128490 active=7490 piece=▁pub\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=187 size=2760 all=129004 active=8004 piece=▁photo\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=185 size=2780 all=129201 active=8201 piece=▁along\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=183 size=2800 all=129719 active=8719 piece=▁Working\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=182 min_freq=42\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=181 size=2820 all=130368 active=7135 piece=▁vers\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=179 size=2840 all=130926 active=7693 piece=uin\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=178 size=2860 all=131389 active=8156 piece=▁hanging\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=176 size=2880 all=131879 active=8646 piece=▁film\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=174 size=2900 all=132511 active=9278 piece=▁Rob\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=174 min_freq=41\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=172 size=2920 all=132990 active=7090 piece=You\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=171 size=2940 all=133413 active=7512 piece=mend\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=169 size=2960 all=133812 active=7911 piece=mom\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=168 size=2980 all=134289 active=8388 piece=▁mins\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=166 size=3000 all=134583 active=8682 piece=▁gorgeous\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=165 min_freq=39\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=163 size=3020 all=134942 active=7089 piece=▁:'\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=162 size=3040 all=135421 active=7568 piece=iant\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=161 size=3060 all=135975 active=8122 piece=mus\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=159 size=3080 all=136421 active=8568 piece=ESS\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=158 size=3100 all=136956 active=9102 piece=ther\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=158 min_freq=38\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=157 size=3120 all=137185 active=7033 piece=▁between\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=156 size=3140 all=137676 active=7524 piece=▁swimming\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=154 size=3160 all=138138 active=7986 piece=sss\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=153 size=3180 all=138447 active=8295 piece=▁share\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=151 size=3200 all=139090 active=8938 piece=itch\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=151 min_freq=37\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=150 size=3220 all=139476 active=7280 piece=ustin\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=149 size=3240 all=139799 active=7603 piece=▁Head\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=147 size=3260 all=140247 active=8050 piece=bie\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=146 size=3280 all=140541 active=8344 piece=▁cousin\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=144 size=3300 all=141152 active=8955 piece=▁13\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=144 min_freq=36\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=143 size=3320 all=141437 active=7324 piece=▁Amer\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=141 size=3340 all=141648 active=7535 piece=OP\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=140 size=3360 all=142168 active=8053 piece=Sha\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=139 size=3380 all=142807 active=8692 piece=▁Fun\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=138 size=3400 all=143157 active=9041 piece=▁Went\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=138 min_freq=35\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=136 size=3420 all=143332 active=7331 piece=fox\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=135 size=3440 all=143811 active=7810 piece=▁fixed\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=134 size=3460 all=144264 active=8263 piece=ergy\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=133 size=3480 all=144460 active=8459 piece=cho\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=132 size=3500 all=144814 active=8813 piece=▁́\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=132 min_freq=34\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=131 size=3520 all=145234 active=7661 piece=Qu\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=131 size=3540 all=145592 active=8019 piece=▁window\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=130 size=3560 all=146142 active=8569 piece=▁mouth\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=129 size=3580 all=146460 active=8886 piece=▁father\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=128 size=3600 all=146888 active=9314 piece=▁mall\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=128 min_freq=33\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=127 size=3620 all=147121 active=7570 piece=than\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=126 size=3640 all=147687 active=8136 piece=yrus\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=125 size=3660 all=148080 active=8529 piece=▁cud\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=124 size=3680 all=148567 active=9016 piece=▁doc\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=123 size=3700 all=148811 active=9260 piece=Jay\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=123 min_freq=32\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=123 size=3720 all=149389 active=7951 piece=▁gosh\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=122 size=3740 all=149668 active=8230 piece=▁ache\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=121 size=3760 all=149950 active=8512 piece=▁Lost\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=120 size=3780 all=150173 active=8735 piece=eff\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=119 size=3800 all=150489 active=9051 piece=edy\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=119 min_freq=31\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=118 size=3820 all=150816 active=7831 piece=▁cd\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=117 size=3840 all=151161 active=8176 piece=ko\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=117 size=3860 all=151719 active=8734 piece=▁review\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=116 size=3880 all=152095 active=9110 piece=▁egg\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=115 size=3900 all=152473 active=9488 piece=▁1.\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=115 min_freq=30\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=114 size=3920 all=152976 active=8109 piece=odes\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=113 size=3940 all=153266 active=8399 piece=kar\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=112 size=3960 all=153595 active=8728 piece=01\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=112 size=3980 all=154162 active=9295 piece=▁paid\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=111 size=4000 all=154539 active=9672 piece=▁level\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=111 min_freq=29\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=110 size=4020 all=154879 active=8066 piece=entr\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=110 size=4040 all=155121 active=8307 piece=quarespace\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=109 size=4060 all=155595 active=8781 piece=itchen\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=108 size=4080 all=155966 active=9151 piece=▁Hehe\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=107 size=4100 all=156360 active=9545 piece=▁ny\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=107 min_freq=29\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=106 size=4120 all=156709 active=8147 piece=bel\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=105 size=4140 all=157085 active=8523 piece=ua\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=105 size=4160 all=157616 active=9054 piece=▁french\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=104 size=4180 all=158038 active=9476 piece=▁phys\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=103 size=4200 all=158238 active=9676 piece=▁mi\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=103 min_freq=28\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=103 size=4220 all=158345 active=8010 piece=▁hehehe\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=102 size=4240 all=158690 active=8355 piece=▁code\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=101 size=4260 all=158982 active=8647 piece=resh\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=101 size=4280 all=159187 active=8852 piece=squarespace\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=100 size=4300 all=159680 active=9345 piece=▁drama\n",
-      "bpe_model_trainer.cc(167) LOG(INFO) Updating active symbols. max_freq=100 min_freq=27\n",
-      "bpe_model_trainer.cc(258) LOG(INFO) Added: freq=99 size=4320 all=160123 active=8427 piece=alif\n",
-      "trainer_interface.cc(615) LOG(INFO) Saving model: 110d0265-edda-4776-b57d-c319336c1e8e.model\n",
-      "trainer_interface.cc(626) LOG(INFO) Saving vocabs: 110d0265-edda-4776-b57d-c319336c1e8e.vocab\n"
-     ]
-    },
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "sequence-length chosen on 99th percentile: 52\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "@transform\n",
     "class Bpe:\n",
@@ -708,7 +249,7 @@
     "        with open(path / f'{i}.model', 'wb') as f:\n",
     "            f.write(self._content)\n",
     "\n",
-    "    \n",
+    "\n",
     "@transform\n",
     "class Pad_Seq:\n",
     "    def __init__(self, seq_len):\n",
@@ -719,7 +260,7 @@
     "            return seq + [2 for i in range(len(seq), self.seq_len)], [len(seq)]\n",
     "        return seq[:self.seq_len], [self.seq_len] \n",
     "\n",
-    "    \n",
+    "\n",
     "@transform\n",
     "class MyNN(torch.nn.Module):\n",
     "    def __init__(self, hidden_size, decoder_hidden, emb_dim):\n",
@@ -758,11 +299,61 @@
     "    elif 0.4 <= positive_score:\n",
     "        category = 'Negative'\n",
     "    return {'Negativeness': round(negative_score, 2),\n",
-    "            'Positiveness': round(positive_score, 2), 'Sentiment': category}\n",
-    "\n",
+    "            'Positiveness': round(positive_score, 2), 'Sentiment': category}"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "ae5e9dae",
+   "metadata": {},
+   "source": [
+    "Initialize the Byte Pair Encoder and print it. "
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "8d706b4b",
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "bpe = Bpe()\n",
-    "bpe.fit('corpus.txt')\n",
-    "\n",
+    "bpe"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "e1ee2568",
+   "metadata": {},
+   "source": [
+    "Fit the Byte Pair Encoder on our corpus."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "48043d8a",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "bpe.fit('corpus.txt')"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "id": "cf09d276",
+   "metadata": {},
+   "source": [
+    "Choose a padding length and define the remaining components of our model."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "9a9c7c91",
+   "metadata": {},
+   "outputs": [],
+   "source": [
     "random_sample = [train_data[i][0] for i in numpy.random.permutation(len(train_data))[:10000]]\n",
     "len_list = [len(bpe(sent)) for sent in random_sample]\n",
     "seq_len = int(numpy.quantile(len_list, 0.01 * PADDING_PERCENTILE))\n",
@@ -786,47 +377,17 @@
    "id": "253078f5",
    "metadata": {},
    "source": [
-    "Let's represent graphically the distribution of the sequence length of a subsample of our data. As we see, with out padding to a sequence length of 52 we keep the 99% of our sentences."
+    "Let's represent graphically the distribution of the sequence length of a subsample of our data. We choose a padding length such that we don't cut off 99% of our sentences."
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": null,
    "id": "33f44279",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "(array([3.600e+02, 1.178e+03, 1.675e+03, 1.546e+03, 1.333e+03, 1.152e+03,\n",
-       "        1.037e+03, 8.310e+02, 5.540e+02, 2.140e+02, 7.800e+01, 2.200e+01,\n",
-       "        8.000e+00, 4.000e+00, 3.000e+00, 1.000e+00, 2.000e+00, 1.000e+00,\n",
-       "        0.000e+00, 1.000e+00]),\n",
-       " array([  1.  ,   5.95,  10.9 ,  15.85,  20.8 ,  25.75,  30.7 ,  35.65,\n",
-       "         40.6 ,  45.55,  50.5 ,  55.45,  60.4 ,  65.35,  70.3 ,  75.25,\n",
-       "         80.2 ,  85.15,  90.1 ,  95.05, 100.  ]),\n",
-       " <BarContainer object of 20 artists>)"
-      ]
-     },
-     "execution_count": 10,
-     "metadata": {},
-     "output_type": "execute_result"
-    },
-    {
-     "data": {
-      "image/png": "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\n",
-      "text/plain": [
-       "<Figure size 432x288 with 1 Axes>"
-      ]
-     },
-     "metadata": {
-      "needs_background": "light"
-     },
-     "output_type": "display_data"
-    }
-   ],
+   "outputs": [],
    "source": [
-    "plt.hist(len_list, bins=20)"
+    "plt.hist(len_list, bins=20);"
    ]
   },
   {
@@ -848,11 +409,12 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 11,
+   "execution_count": null,
    "id": "302456bb",
    "metadata": {},
    "outputs": [],
    "source": [
+    "# training pipeline\n",
     "data_model = ( \n",
     "    same[0] \n",
     "    >> bpe \n",
@@ -865,6 +427,7 @@
     "targets = same[1] >> batch\n",
     "model = data_model + targets >> loss_function\n",
     "\n",
+    "# inference pipeline for easy human readability of the output\n",
     "infer_model = (\n",
     "    bpe\n",
     "    >> to_tensor\n",
@@ -877,6 +440,17 @@
     ")"
    ]
   },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "68c68a7a",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Print the inference model\n",
+    "infer_model"
+   ]
+  },
   {
    "cell_type": "markdown",
    "id": "e2b49e65",
@@ -889,161 +463,30 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 12,
+   "execution_count": null,
+   "id": "de7a3375",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "device = 'cuda' if torch.cuda.is_available() else 'cpu'\n",
+    "print('Device to be used: ', device)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
    "id": "65048132",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "Start epoch 0\n",
-      "TRAIN iteration 0; loss: 0.6947038769721985\n",
-      "VALID_accuracy: 0.4934999942779541\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 10; loss: 0.6906222105026245\n",
-      "TRAIN iteration 20; loss: 0.6859002709388733\n",
-      "TRAIN iteration 30; loss: 0.6752104163169861\n",
-      "Start epoch 1\n",
-      "TRAIN iteration 40; loss: 0.6641473174095154\n",
-      "TRAIN iteration 50; loss: 0.6562404036521912\n",
-      "TRAIN iteration 60; loss: 0.652820885181427\n",
-      "TRAIN iteration 70; loss: 0.6427056789398193\n",
-      "Start epoch 2\n",
-      "TRAIN iteration 80; loss: 0.6457321643829346\n",
-      "TRAIN iteration 90; loss: 0.6501889824867249\n",
-      "TRAIN iteration 100; loss: 0.6404860615730286\n",
-      "VALID_accuracy: 0.6357499957084656\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 110; loss: 0.6329899430274963\n",
-      "Start epoch 3\n",
-      "TRAIN iteration 120; loss: 0.635252058506012\n",
-      "TRAIN iteration 130; loss: 0.6243354678153992\n",
-      "TRAIN iteration 140; loss: 0.6225642561912537\n",
-      "TRAIN iteration 150; loss: 0.6127985715866089\n",
-      "Start epoch 4\n",
-      "TRAIN iteration 160; loss: 0.6067519783973694\n",
-      "TRAIN iteration 170; loss: 0.6153565049171448\n",
-      "TRAIN iteration 180; loss: 0.5954265594482422\n",
-      "Start epoch 5\n",
-      "TRAIN iteration 190; loss: 0.5899824500083923\n",
-      "TRAIN iteration 200; loss: 0.588318407535553\n",
-      "VALID_accuracy: 0.6858333945274353\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 210; loss: 0.5769174695014954\n",
-      "TRAIN iteration 220; loss: 0.574532687664032\n",
-      "Start epoch 6\n",
-      "TRAIN iteration 230; loss: 0.5814948678016663\n",
-      "TRAIN iteration 240; loss: 0.5644465088844299\n",
-      "TRAIN iteration 250; loss: 0.5725738406181335\n",
-      "TRAIN iteration 260; loss: 0.5513509511947632\n",
-      "Start epoch 7\n",
-      "TRAIN iteration 270; loss: 0.5832719206809998\n",
-      "TRAIN iteration 280; loss: 0.5667550563812256\n",
-      "TRAIN iteration 290; loss: 0.5543938875198364\n",
-      "TRAIN iteration 300; loss: 0.5393378138542175\n",
-      "VALID_accuracy: 0.7122499942779541\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "Start epoch 8\n",
-      "TRAIN iteration 310; loss: 0.5516550540924072\n",
-      "TRAIN iteration 320; loss: 0.5448687076568604\n",
-      "TRAIN iteration 330; loss: 0.5566322207450867\n",
-      "TRAIN iteration 340; loss: 0.5291003584861755\n",
-      "Start epoch 9\n",
-      "TRAIN iteration 350; loss: 0.5467310547828674\n",
-      "TRAIN iteration 360; loss: 0.5399101376533508\n",
-      "TRAIN iteration 370; loss: 0.54032963514328\n",
-      "Start epoch 10\n",
-      "TRAIN iteration 380; loss: 0.5330530405044556\n",
-      "TRAIN iteration 390; loss: 0.5297200679779053\n",
-      "TRAIN iteration 400; loss: 0.5232966542243958\n",
-      "VALID_accuracy: 0.7289166450500488\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 410; loss: 0.5260593295097351\n",
-      "Start epoch 11\n",
-      "TRAIN iteration 420; loss: 0.5320862531661987\n",
-      "TRAIN iteration 430; loss: 0.5193870663642883\n",
-      "TRAIN iteration 440; loss: 0.5331116318702698\n",
-      "TRAIN iteration 450; loss: 0.5037891864776611\n",
-      "Start epoch 12\n",
-      "TRAIN iteration 460; loss: 0.5355626940727234\n",
-      "TRAIN iteration 470; loss: 0.5226110219955444\n",
-      "TRAIN iteration 480; loss: 0.5091677904129028\n",
-      "TRAIN iteration 490; loss: 0.5088812708854675\n",
-      "Start epoch 13\n",
-      "TRAIN iteration 500; loss: 0.5185052156448364\n",
-      "VALID_accuracy: 0.734416663646698\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 510; loss: 0.5084543824195862\n",
-      "TRAIN iteration 520; loss: 0.5204645991325378\n",
-      "TRAIN iteration 530; loss: 0.49525976181030273\n",
-      "Start epoch 14\n",
-      "TRAIN iteration 540; loss: 0.5098943710327148\n",
-      "TRAIN iteration 550; loss: 0.5045745968818665\n",
-      "TRAIN iteration 560; loss: 0.5006686449050903\n",
-      "Start epoch 15\n",
-      "TRAIN iteration 570; loss: 0.5051096677780151\n",
-      "TRAIN iteration 580; loss: 0.5021302103996277\n",
-      "TRAIN iteration 590; loss: 0.49500545859336853\n",
-      "TRAIN iteration 600; loss: 0.5030442476272583\n",
-      "VALID_accuracy: 0.7434167265892029\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "Start epoch 16\n",
-      "TRAIN iteration 610; loss: 0.4948078393936157\n",
-      "TRAIN iteration 620; loss: 0.49545618891716003\n",
-      "TRAIN iteration 630; loss: 0.5016372799873352\n",
-      "TRAIN iteration 640; loss: 0.4851166307926178\n",
-      "Start epoch 17\n",
-      "TRAIN iteration 650; loss: 0.5088880658149719\n",
-      "TRAIN iteration 660; loss: 0.4949275553226471\n",
-      "TRAIN iteration 670; loss: 0.478756308555603\n",
-      "TRAIN iteration 680; loss: 0.48727765679359436\n",
-      "Start epoch 18\n",
-      "TRAIN iteration 690; loss: 0.49614420533180237\n",
-      "TRAIN iteration 700; loss: 0.4834238290786743\n",
-      "VALID_accuracy: 0.7450833320617676\n",
-      "Saving...\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_4.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_5.pt\n",
-      "saving torch module to sent_analysis.padl/sent_analysis_6.pt\n",
-      "TRAIN iteration 710; loss: 0.49662700295448303\n",
-      "TRAIN iteration 720; loss: 0.4747251570224762\n",
-      "Start epoch 19\n",
-      "TRAIN iteration 730; loss: 0.48134317994117737\n",
-      "TRAIN iteration 740; loss: 0.4802393913269043\n",
-      "TRAIN iteration 750; loss: 0.4737522602081299\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
-    "model.pd_to('cuda')\n",
+    "model.pd_to(device)\n",
     "max_accuracy = 0.\n",
     "optimizer = torch.optim.Adam(model.pd_parameters(), lr=1e-4)\n",
     "it = 0\n",
-    "num_epochs = 20\n",
-    "train_batch_size = 4000\n",
-    "valid_batch_size = 4000\n",
+    "num_epochs = 1\n",
+    "max_itr = 201\n",
+    "train_batch_size = 2000\n",
+    "valid_batch_size = 2000\n",
     "\n",
     "if os.path.exists('train_file.csv'):\n",
     "    os.remove('train_file.csv')\n",
@@ -1057,11 +500,11 @@
     "        optimizer.zero_grad()\n",
     "        loss.backward()\n",
     "        optimizer.step()\n",
-    "        if it % 10 == 0:\n",
+    "        if it % 5 == 0:\n",
     "            print(f'TRAIN iteration {it}; loss: {loss.item()}')\n",
     "            with open('train_file.csv', 'a') as f:\n",
     "                f.write(f'{loss.item()}\\n')\n",
-    "        if it % 100 == 0:\n",
+    "        if it % 50 == 0:\n",
     "            counter = 0.\n",
     "            accuracy = 0.\n",
     "            for res, targets in model[:-1].eval_apply(valid_data, batch_size=valid_batch_size):\n",
@@ -1077,6 +520,8 @@
     "                max_accuracy = accuracy\n",
     "                print('Saving...')\n",
     "                infer_model.pd_save('sent_analysis.padl', force_overwrite=True)\n",
+    "        if it == max_itr:\n",
+    "            break\n",
     "        it += 1 "
    ]
   },
@@ -1090,41 +535,20 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 22,
+   "execution_count": null,
    "id": "a6320664",
    "metadata": {},
-   "outputs": [
-    {
-     "name": "stdout",
-     "output_type": "stream",
-     "text": [
-      "loading torch module from sent_analysis.padl/sent_analysis_4.pt\n",
-      "loading torch module from sent_analysis.padl/sent_analysis_5.pt\n",
-      "loading torch module from sent_analysis.padl/sent_analysis_6.pt\n"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "loaded_model = padl.load('sent_analysis.padl')"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": 21,
+   "execution_count": null,
    "id": "6c060142",
    "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "{'Negativeness': 0.24, 'Positiveness': 0.76, 'Sentiment': 'Positive'}"
-      ]
-     },
-     "execution_count": 21,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
+   "outputs": [],
    "source": [
     "loaded_model.infer_apply('Padl is a powerful and super cool tool!')"
    ]
@@ -1154,7 +578,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.9.5"
+   "version": "3.8.2"
   }
  },
  "nbformat": 4,
diff --git a/padl/transforms.py b/padl/transforms.py
index 98bc190b..0296d1d0 100644
--- a/padl/transforms.py
+++ b/padl/transforms.py
@@ -2513,6 +2513,7 @@ def __getitem__(self, item):
     def __len__(self):
         return len(self.samples)
 
+
 @dataclass
 class _TraceItem:
     """Catch information of an Exception produced in a Transform call.


Test patch:
diff --git a/tests/unittests/test_transforms.py b/tests/unittests/test_transforms.py
index a5689eff..88a45201 100644
--- a/tests/unittests/test_transforms.py
+++ b/tests/unittests/test_transforms.py
@@ -5,7 +5,6 @@
 from padl.transforms import Batchify, Unbatchify
 from padl.dumptools.serialize import value
 from collections import namedtuple
-from padl.exceptions import WrongDeviceError
 
 GLOBAL_1 = 0
 GLOBAL_1 = GLOBAL_1 + 5