{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#hide\n", "#skip\n", "! [ -e /content ] && pip install -Uqq fastai # upgrade fastai on colab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Set up PyTorch links to appear in fastai docs\n", "- This is mainly for internal use" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#default_exp _pytorch_doc" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from fastai.basics import *" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Test links" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#export\n", "PYTORCH_URL = 'https://pytorch.org/docs/stable/'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#export\n", "def _mod2page(mod):\n", " if mod == Tensor: return 'tensors.html'\n", " name = mod.__name__\n", " name = name.replace('torch.', '').replace('utils.', '')\n", " if name.startswith('nn.modules'): return 'nn.html'\n", " return f'{name}.html'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "test_eq(_mod2page(Tensor), 'tensors.html')\n", "test_eq(_mod2page(torch.nn), 'nn.html')\n", "test_eq(_mod2page(inspect.getmodule(nn.Conv2d)), 'nn.html')\n", "test_eq(_mod2page(F), 'nn.functional.html')\n", "test_eq(_mod2page(torch.optim), 'optim.html')\n", "test_eq(_mod2page(torch.utils.data), 'data.html')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#export\n", "import importlib" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#export\n", "def pytorch_doc_link(name):\n", " if name.startswith('F'): name = 'torch.nn.functional' + name[1:]\n", " if not name.startswith('torch.'): name = 'torch.' + name\n", " if name == 'torch.Tensor': return f'{PYTORCH_URL}tensors.html'\n", " try:\n", " mod = importlib.import_module(name)\n", " return f'{PYTORCH_URL}{_mod2page(mod)}'\n", " except: pass\n", " splits = name.split('.')\n", " mod_name,fname = '.'.join(splits[:-1]),splits[-1]\n", " if mod_name == 'torch.Tensor': return f'{PYTORCH_URL}tensors.html#{name}'\n", " try:\n", " mod = importlib.import_module(mod_name)\n", " page = _mod2page(mod)\n", " return f'{PYTORCH_URL}{page}#{name}'\n", " except: return None" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "test_links = {\n", " 'Tensor': 'https://pytorch.org/docs/stable/tensors.html',\n", " 'Tensor.sqrt': 'https://pytorch.org/docs/stable/tensors.html#torch.Tensor.sqrt',\n", " 'torch.zeros_like': 'https://pytorch.org/docs/stable/torch.html#torch.zeros_like',\n", " 'nn.Module': 'https://pytorch.org/docs/stable/nn.html#torch.nn.Module',\n", " 'nn.Linear': 'https://pytorch.org/docs/stable/nn.html#torch.nn.Linear',\n", " 'F.cross_entropy': 'https://pytorch.org/docs/stable/nn.functional.html#torch.nn.functional.cross_entropy'\n", "}\n", "for f,l in test_links.items(): test_eq(pytorch_doc_link(f), l)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Export -" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Converted 00_torch_core.ipynb.\n", "Converted 01_layers.ipynb.\n", "Converted 02_data.load.ipynb.\n", "Converted 03_data.core.ipynb.\n", "Converted 04_data.external.ipynb.\n", "Converted 05_data.transforms.ipynb.\n", "Converted 06_data.block.ipynb.\n", "Converted 07_vision.core.ipynb.\n", "Converted 08_vision.data.ipynb.\n", "Converted 09_vision.augment.ipynb.\n", "Converted 09b_vision.utils.ipynb.\n", "Converted 09c_vision.widgets.ipynb.\n", "Converted 10_tutorial.pets.ipynb.\n", "Converted 11_vision.models.xresnet.ipynb.\n", "Converted 12_optimizer.ipynb.\n", "Converted 13_learner.ipynb.\n", "Converted 13a_metrics.ipynb.\n", "Converted 14_callback.schedule.ipynb.\n", "Converted 14a_callback.data.ipynb.\n", "Converted 15_callback.hook.ipynb.\n", "Converted 15a_vision.models.unet.ipynb.\n", "Converted 16_callback.progress.ipynb.\n", "Converted 17_callback.tracker.ipynb.\n", "Converted 18_callback.fp16.ipynb.\n", "Converted 19_callback.mixup.ipynb.\n", "Converted 20_interpret.ipynb.\n", "Converted 20a_distributed.ipynb.\n", "Converted 21_vision.learner.ipynb.\n", "Converted 22_tutorial.imagenette.ipynb.\n", "Converted 23_tutorial.transfer_learning.ipynb.\n", "Converted 24_vision.gan.ipynb.\n", "Converted 30_text.core.ipynb.\n", "Converted 31_text.data.ipynb.\n", "Converted 32_text.models.awdlstm.ipynb.\n", "Converted 33_text.models.core.ipynb.\n", "Converted 34_callback.rnn.ipynb.\n", "Converted 35_tutorial.wikitext.ipynb.\n", "Converted 36_text.models.qrnn.ipynb.\n", "Converted 37_text.learner.ipynb.\n", "Converted 38_tutorial.ulmfit.ipynb.\n", "Converted 40_tabular.core.ipynb.\n", "Converted 41_tabular.data.ipynb.\n", "Converted 42_tabular.model.ipynb.\n", "Converted 43_tabular.learner.ipynb.\n", "Converted 45_collab.ipynb.\n", "Converted 50_datablock_examples.ipynb.\n", "Converted 60_medical.imaging.ipynb.\n", "Converted 65_medical.text.ipynb.\n", "Converted 70_callback.wandb.ipynb.\n", "Converted 71_callback.tensorboard.ipynb.\n", "Converted 72_callback.neptune.ipynb.\n", "Converted 97_test_utils.ipynb.\n", "Converted 99_pytorch_doc.ipynb.\n", "Converted index.ipynb.\n" ] } ], "source": [ "#hide\n", "from nbdev.export import notebook2script\n", "notebook2script()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "jupytext": { "split_at_heading": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 2 }