diff --git a/Makefile b/Makefile
index 539901ad..505af47a 100644
--- a/Makefile
+++ b/Makefile
@@ -22,6 +22,7 @@ uninstall: ## Uninstall
pip uninstall labml_nn
docs: ## Render annotated HTML
+ python utils/sitemap.py
cd labml_nn; pylit --remove_empty_sections --title_md -t ../../../pylit/templates/nn -d ../docs -w *
pages-old: ## Copy to lab-ml site
diff --git a/docs/sitemap.xml b/docs/sitemap.xml
new file mode 100644
index 00000000..72c09fb8
--- /dev/null
+++ b/docs/sitemap.xml
@@ -0,0 +1,464 @@
+
+
+
+
+
+ https://nn.labml.ai/gan/cycle_gan.html
+ 2021-01-23T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/gan/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/gan/simple_mnist_experiment.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/gan/dcgan.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/gan/cycle_gan.html
+ 2021-01-23T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/activations/index.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/activations/swish.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/hypernetworks/experiment.html
+ 2021-01-03T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/hypernetworks/index.html
+ 2021-01-03T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/hypernetworks/experiment.html
+ 2021-01-21T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/hypernetworks/hyper_lstm.html
+ 2021-01-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/experiments/nlp_autoregression.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/experiments/index.html
+ 2020-12-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/index.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/adam_warmup.html
+ 2021-01-13T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/configs.html
+ 2021-01-14T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/adam_warmup_cosine_decay.html
+ 2021-01-14T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/ada_belief.html
+ 2021-01-14T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/index.html
+ 2021-01-13T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/noam.html
+ 2020-12-23T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/mnist_experiment.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/performance_test.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/radam.html
+ 2021-01-13T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/adam.html
+ 2021-01-13T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/optimizers/amsgrad.html
+ 2020-12-14T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/knn/build_index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/knn/train_model.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/knn/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/knn/eval_knn.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/configs.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/models.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/gpt/experiment.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/gpt/index.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/feed_forward.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/index.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/feedback/experiment.html
+ 2021-01-14T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/feedback/index.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/glu_variants/index.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/glu_variants/simple.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/glu_variants/experiment.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/glu_variants/simple.html
+ 2021-01-26T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/utils.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/switch/experiment.html
+ 2021-01-21T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/switch/index.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/switch/experiment.html
+ 2021-01-25T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/positional_encoding.html
+ 2021-01-07T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/label_smoothing_loss.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/mha.html
+ 2021-01-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/transformers/relative_mha.html
+ 2021-01-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/utils.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/capsule_networks/mnist.html
+ 2021-01-17T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/capsule_networks/index.html
+ 2021-01-17T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/capsule_networks/mnist.html
+ 2021-01-16T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/recurrent_highway_networks/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/sketch_rnn/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/game.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/dqn/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/dqn/model.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/dqn/experiment.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/dqn/replay_buffer.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/ppo/index.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/ppo/gae.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/rl/ppo/experiment.html
+ 2020-12-10T16:30:00+00:00
+ 1.00
+
+
+
+
+ https://nn.labml.ai/lstm/index.html
+ 2021-01-03T16:30:00+00:00
+ 1.00
+
+
+
+
\ No newline at end of file
diff --git a/utils/__init__.py b/utils/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/utils/sitemap.py b/utils/sitemap.py
new file mode 100644
index 00000000..5d7bc4de
--- /dev/null
+++ b/utils/sitemap.py
@@ -0,0 +1,61 @@
+from pathlib import Path
+
+import git
+
+HOME = Path('./labml_nn')
+REPO = git.Repo('.')
+
+
+def collect(path: Path):
+ if path.is_file():
+ try:
+ commit = next(iter(REPO.iter_commits(paths=path)))
+ except StopIteration:
+ return []
+
+ html = path.relative_to(HOME)
+ if html.stem == '__init__':
+ html = html.parent / 'index.html'
+ else:
+ html = html.parent / f'{html.stem}.html'
+
+ return [{'path': str(html), 'date': str(commit.committed_datetime.date())}]
+
+ urls = []
+ for f in path.iterdir():
+ urls += collect(f)
+
+ return urls
+
+
+def main():
+ urls = []
+ for f in HOME.iterdir():
+ urls += collect(f)
+
+ urls = [f'''
+
+ https://nn.labml.ai/{u['path']}
+ {u['date']}T16:30:00+00:00
+ 1.00
+
+ ''' for u in urls]
+
+ urls = '\n'.join(urls)
+ xml = f'''
+
+
+ {urls}
+
+ '''
+
+ with open(str(HOME.parent / 'docs' / 'sitemap.xml'), 'w') as f:
+ f.write(xml)
+
+
+if __name__ == '__main__':
+ main()