{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# How to create groups of layers and each one with a different Learning Rate? | fastai v2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Objective of the notebook" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The objective of this notebook is to explain:\n", "\n", "- how to create parameters groups for a model with fastai v2 \n", "- how to train each parameters group with a different Learning Rate and the impact of each method on the model performance\n", "- how to check the Learning Rates effectively used by the Optimizer during the training\n", "\n", "\n", "Author: [Pierre Guillou](https://www.linkedin.com/in/pierreguillou/) on May 25, 2020." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overview of the results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Parameters groups" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to change the fastai2 default configuration (3 parameters groups), you need to define a ```splitter``` function and pass it to the ```Learner```." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "```\n", "def splitter(m):\n", " groups = [group for group in m.children()]\n", " groups = L(groups)\n", " return groups.map(params)\n", "\n", "learn = Learner(dls, my_model, splitter=splitter, metrics=error_rate)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "([source](https://dev.fast.ai/learner#Learner)) ```splitter``` is a function that takes ```self.model``` and returns a list of parameter groups (or just one parameter group if there are no different parameter groups). The default is [trainable_params](https://dev.fast.ai/torch_core#trainable_params), which returns all trainable parameters of the model.\n", "```\n", "def trainable_params(m):\n", " \"Return all trainable parameters of `m`\"\n", " return [p for p in m.parameters() if p.requires_grad]\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### One Learning Rate (max) by parameters group" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are 4 possiblities. \n", "\n", "For example with 3 parameters groups, you can do the following (for a ```Learner``` unfrozen and the use of ```learn.fit_one_cycle()```):\n", "\n", "```\n", "1. if lr_max = 1e-3 -> [0.001,0.001,0.001]\n", "2. if lr_max = slice(1e-3) -> [0.0001,0.0001,0.001]\n", "3. if lr_max = slice(1e-5,1e-3) -> array([1.e-05, 1.e-04, 1.e-03]) #LRs evenly geometrically spaced\n", "4. if lr_max = [1e-5, 1e-4, 1e-3] -> array([1.e-05, 1.e-04, 1.e-03]) #LRs evenly linearly spaced or not\n", "```\n", "\n", "1. All parameters groups will use **the same Learning Rate** (and the same Optimizer method like Adam + 1cycle policy for all).\n", "2. The last layer group’s Learning Rate (max) value is setup to lr, and all previous parameters groups ones to **lr/10**.\n", "3. Train the very first layers at a Learning Rate of 1e-5, the very last at 1e-3, and the Learning Rates of other parameters groups are **evenly geometrically spaced** between theses two values.\n", "4. Train the very first layers at a Learning Rate of 1e-5, the very last at 1e-3, and the Learning Rates of other parameters groups are **evenly linearly spaced between theses two values or you can pass as a list any Learning Rate values**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### WARNING" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Points 3 and 4 are not equivalent for a number of parameters groups greater than 3!!!**\n", "\n", "- point 3: Learning Rates are calculated geometrically.\n", "- point 4: you can pass an array with the Learning Rate values you want.\n", "\n", "Check the following graph to understand what means passing a slice with 2 values as list of Learning Rates (point 3)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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Fx7/zDPP6IcfflhrrfXPP/+sIyMj9e7du7XFYtFvvPGG7tixY+GxgL7lllv0yZMndXx8vA4KCtJLly7VWms9ZcoU3blzZ6211hs3btShoaHaarVqrbVOSUnRXl5eOikp6YK8KSkp2sfHR//444/aYrHoiRMnajc3N/3ll19eNlNaWpr29/fX06ZN0xaLRc+aNUv7+/vr1NRUrbXW3bp105GRkXr//v361KlTOjo6Wjds2FCvWLFCWywWPWTIED1s2DCttdZZWVk6LCxMf/PNN9pisegtW7bowMBAvXOn8Z4PHTpUv/jii+dkr1u3rm7ZsqVOSEjQ2dnZhbetWLFCa631O++8o5s1a6b37NmjbTab3rZtW2G26dOn69TUVG2xWPR7772nQ0JCdE5OjtZa61deeUXfe++9WmutDx06pAFtsVh0bm6uDggIOOd7r1WrVnru3LkXvK9ZWVnax8dH79mzR2utdWJiYuHXMmXKFO3q6qrff/99nZ+fr2fPnq19fX11Wlqa1lrrRYsW6f3792ubzaZXr16tvby89JYtWwr/bX19ffXy5cu11WrVR44c0bGxsVprrW+77TY9YsQInZWVpZOTk3Xbtm31559/rrXW+rPPPtONGzfWCQkJOi0tTXfv3r3w6yrO+T9fogzkZmq9+FmtX/HT+v1mWu9bec7dKZm5uuELS/TL83aUycsBm3UxNVVG1mds2rSJlJQUXn75ZapUqUL9+vV56KGHmD17NgCDBg3iu+++A4z/4GbPns2gQYMA+OKLL3j++eeJjo7Gzc2NF154gW3btp0zkn3uuefw9/enTp06XHfddWzbtu2CDO3atcPPz69wtDZ79my6d+9OSEjIBccuWbKEpk2bcuedd+Lm5sYTTzxBzZo1C++/VKbFixfTsGFDhgwZgpubG/fccw9RUVEsXLiw8PH3338/kZGR+Pn50bt3byIjI+nRowdubm7cfffdbN26FYBFixYRERHB/fffj5ubG61bt6Zfv37MnTv3ku/3E088QXh4OF5eXhfc99VXXzFu3DgaN26MUoqWLVsSGGjMAw4ePJjAwEDc3Nx4+umnycvL459//rnka3l4eDBgwABmzJgBGPPjcXFx3HrrrcUe7+Liws6dO8nJySE0NJSmTZsW3lejRg1GjRqFu7s7AwYMoHHjxoWj3VtuuYXIyEiUUnTr1o0b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\n", "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(\"images/lrs.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Initialization" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "#hide\n", "from utils import *" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cuda device: 0\n", "cuda device name: Tesla V100-PCIE-32GB\n" ] } ], "source": [ "print(f'cuda device: {torch.cuda.current_device()}')\n", "print(f'cuda device name: {torch.cuda.get_device_name(0)}')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## fastai documentation\n", "\n", "- class [Learner](https://github.com/fastai/fastai2/blob/master/fastai2/learner.py#L81)\n", " - [defaults.lr](https://github.com/fastai/fastai2/blob/master/fastai2/learner.py#L22) = 1e-3\n", " - [create_opt()](https://github.com/fastai/fastai2/blob/master/fastai2/learner.py#L140)\n", " - [fit_one_cycle](https://github.com/fastai/fastai2/blob/master/fastai2/callback/schedule.py#L103)\n", " - [combined_cos()](https://dev.fast.ai/callback.schedule#combined_cos)\n", "- class [Optimizer](https://github.com/fastai/fastai2/blob/master/fastai2/optimizer.py#L64)\n", " - [hypers](https://github.com/fastai/fastai2/blob/master/fastai2/optimizer.py#L72)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### combined_cos()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor(0.9899) 4.574851048952042e-06\n", "tensor(1.) 9.999999999940612e-08\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lr_max=1e-2\n", "div=25.\n", "div_final=1e5\n", "pct_start=0.25\n", "\n", "p = torch.linspace(0.,1,100)\n", "f = combined_cos(pct_start, lr_max/div, lr_max, lr_max/div_final)\n", "plt.plot(p, [f(o) for o in p]);\n", "\n", "# last values of cosine annealing for the 1cycle policy for lr_max = 1e-2\n", "print(p[-2],f(p[-2]))\n", "print(p[-1],f(p[-1]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from fastai2.vision.all import *\n", "path = untar_data(URLs.PETS)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "#hide\n", "Path.BASE_PATH = path" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dataloaders" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "pets = DataBlock(blocks = (ImageBlock, CategoryBlock),\n", " get_items=get_image_files, \n", " splitter=RandomSplitter(seed=42),\n", " get_y=using_attr(RegexLabeller(r'(.+)_\\d+.jpg$'), 'name'),\n", " item_tfms=Resize(460),\n", " batch_tfms=aug_transforms(size=224, min_scale=0.75))\n", "dls = pets.dataloaders(path/\"images\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dls.show_batch(nrows=1, ncols=3)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(#37) ['Abyssinian','Bengal','Birman','Bombay','British_Shorthair','Egyptian_Mau','Maine_Coon','Persian','Ragdoll','Russian_Blue'...]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dls.vocab" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Change pretrained resnet18 with an output layer of 1000 classes to 37." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Linear(in_features=512, out_features=1000, bias=True)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# model resnet18\n", "m = resnet18(pretrained=True)\n", "\n", "# last layer of m\n", "# list(m.children())[-1]\n", "m.fc" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "37" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of classes of my dls\n", "num_classes = len(dls.vocab)\n", "num_classes" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Linear(in_features=512, out_features=37, bias=True)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# HEAD of the model: remplace last linear layer of 1000 classes by one with 37 classes\n", "# source: https://discuss.pytorch.org/t/resnet-last-layer-modification/33530/2\n", "my_model = m\n", "my_model.fc = nn.Linear(512, num_classes)\n", "\n", "# last layer of m\n", "list(my_model.children())[-1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learner" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Splitter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "([source](https://dev.fast.ai/learner#Learner)) ```splitter``` is a function that takes ```self.model``` and returns a list of parameter groups (or just one parameter group if there are no different parameter groups). The default is [trainable_params](https://dev.fast.ai/torch_core#trainable_params), which returns all trainable parameters of the model.\n", "```\n", "def trainable_params(m):\n", " \"Return all trainable parameters of `m`\"\n", " return [p for p in m.parameters() if p.requires_grad]\n", "```" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of layers groups of my_model\n", "len(list(my_model.children()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, if we don't pass a splitter function to our ```Learner```, only one Learning Rate will be applied to all layers of my_model. \n", "\n", "As there are 10 layers groups in my_model, let's create a ```splitter``` function that distributes the parameters of my_model to 10 parameters groups." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def splitter(m):\n", " groups = [group for group in m.children()]\n", " groups = L(groups)\n", " return groups.map(params)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# number of parameters groups of my_model\n", "len(splitter(my_model))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Learner without splitter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Without splitter, there is 1 parameters group by default and therefore, 1 Learning Rate (1e-3 by default)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dls, my_model, metrics=error_rate)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 1\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "learn.create_opt()\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (before its atualization by the Optimizer of the function fit_one_cycle())\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Learner with splitter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With our ```splitter```, there are 10 parameters groups and automatically, the same Learning Rate (1e-3 by default) for each group." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dls, my_model, splitter=splitter, metrics=error_rate)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "learn.create_opt()\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (before its atualization by the Optimizer of the function fit_one_cycle())\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Training with splitter" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "learn = Learner(dls, my_model, splitter=splitter, metrics=error_rate)\n", "learn.freeze()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "ResNet (Input shape: ['64 x 3 x 224 x 224'])\n", "================================================================\n", "Layer (type) Output Shape Param # Trainable \n", "================================================================\n", "Conv2d 64 x 64 x 112 x 112 9,408 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 64 x 112 x 112 128 True \n", "________________________________________________________________\n", "ReLU 64 x 64 x 112 x 112 0 False \n", "________________________________________________________________\n", "MaxPool2d 64 x 64 x 56 x 56 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 64 x 56 x 56 36,864 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 64 x 56 x 56 128 True \n", "________________________________________________________________\n", "ReLU 64 x 64 x 56 x 56 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 64 x 56 x 56 36,864 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 64 x 56 x 56 128 True \n", "________________________________________________________________\n", "Conv2d 64 x 64 x 56 x 56 36,864 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 64 x 56 x 56 128 True \n", "________________________________________________________________\n", "ReLU 64 x 64 x 56 x 56 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 64 x 56 x 56 36,864 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 64 x 56 x 56 128 True \n", "________________________________________________________________\n", "Conv2d 64 x 128 x 28 x 28 73,728 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 128 x 28 x 28 256 True \n", "________________________________________________________________\n", "ReLU 64 x 128 x 28 x 28 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 128 x 28 x 28 147,456 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 128 x 28 x 28 256 True \n", "________________________________________________________________\n", "Conv2d 64 x 128 x 28 x 28 8,192 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 128 x 28 x 28 256 True \n", "________________________________________________________________\n", "Conv2d 64 x 128 x 28 x 28 147,456 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 128 x 28 x 28 256 True \n", "________________________________________________________________\n", "ReLU 64 x 128 x 28 x 28 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 128 x 28 x 28 147,456 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 128 x 28 x 28 256 True \n", "________________________________________________________________\n", "Conv2d 64 x 256 x 14 x 14 294,912 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 256 x 14 x 14 512 True \n", "________________________________________________________________\n", "ReLU 64 x 256 x 14 x 14 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 256 x 14 x 14 589,824 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 256 x 14 x 14 512 True \n", "________________________________________________________________\n", "Conv2d 64 x 256 x 14 x 14 32,768 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 256 x 14 x 14 512 True \n", "________________________________________________________________\n", "Conv2d 64 x 256 x 14 x 14 589,824 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 256 x 14 x 14 512 True \n", "________________________________________________________________\n", "ReLU 64 x 256 x 14 x 14 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 256 x 14 x 14 589,824 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 256 x 14 x 14 512 True \n", "________________________________________________________________\n", "Conv2d 64 x 512 x 7 x 7 1,179,648 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 512 x 7 x 7 1,024 True \n", "________________________________________________________________\n", "ReLU 64 x 512 x 7 x 7 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 512 x 7 x 7 2,359,296 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 512 x 7 x 7 1,024 True \n", "________________________________________________________________\n", "Conv2d 64 x 512 x 7 x 7 131,072 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 512 x 7 x 7 1,024 True \n", "________________________________________________________________\n", "Conv2d 64 x 512 x 7 x 7 2,359,296 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 512 x 7 x 7 1,024 True \n", "________________________________________________________________\n", "ReLU 64 x 512 x 7 x 7 0 False \n", "________________________________________________________________\n", "Conv2d 64 x 512 x 7 x 7 2,359,296 False \n", "________________________________________________________________\n", "BatchNorm2d 64 x 512 x 7 x 7 1,024 True \n", "________________________________________________________________\n", "AdaptiveAvgPool2d 64 x 512 x 1 x 1 0 False \n", "________________________________________________________________\n", "Linear 64 x 37 18,981 True \n", "________________________________________________________________\n", "\n", "Total params: 11,195,493\n", "Total trainable params: 28,581\n", "Total non-trainable params: 11,166,912\n", "\n", "Optimizer used: \n", "Loss function: FlattenedLoss of CrossEntropyLoss()\n", "\n", "Model frozen up to parameter group number 9\n", "\n", "Callbacks:\n", " - TrainEvalCallback\n", " - Recorder\n", " - ProgressCallback" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "learn.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates before its atualization by the Optimizer of the function fit_one_cycle()**" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 0.001, 'mom': 0.9, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "learn.create_opt()\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (before its atualization by the Optimizer of the function fit_one_cycle())\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "SuggestedLRs(lr_min=0.00831763744354248, lr_steep=0.010964781977236271)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "learn.lr_find()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_losserror_ratetime
00.7046560.3336630.11502000:13
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(1, lr_max=1e-2)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "learn.save('my_resnet18_finetuned')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates: last values of cosine annealing for the 1cycle policy with lr_max = 1e-2**" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.281577479700553e-06, 'mom': 0.94994818370704, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (last values of cosine annealing for the 1cycle policy with lr_max = 1e-2)\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conclusion**\n", "\n", "We can verify than the Learning Rates of all parameters groups are identical but only the last parameters group has been updated as the ```Learner``` was frozen." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test 1 | lr_max = 1e-3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Hypothese**: all parameters groups with the same (max) Learning Rate (lr_max = 1e-3)." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "learn.load('my_resnet18_finetuned')\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_losserror_ratetime
00.8613773.3785910.57780800:16
10.6151140.6784420.22327500:16
20.3073240.3218830.11028400:16
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(3, lr_max=1e-3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates: last values of cosine annealing for the 1cycle policy with lr_max = 1e-3**" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (last values of cosine annealing for the 1cycle policy with lr_max = 1e-3)\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conclusion**\n", "\n", "We can verify than the Learning Rates of all parameters groups are identical." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test 2 | lr_max = slice(1e-3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Hypothese**\n", "\n", "- The last parameters group has a Learning Rate lr_max of 1e-3.\n", "- All the (previous) others have a Learning Rate lr_max of **lr_max/10**." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "learn.load('my_resnet18_finetuned')\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_losserror_ratetime
00.3461020.3209280.10690100:16
10.2426300.2491660.08660400:16
20.1511280.2333830.08795700:16
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(3, lr_max=slice(1e-3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates: last values of cosine annealing for the 1cycle policy with lr_max = slice(1e-3)**" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103824835e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (last values of cosine annealing for the 1cycle policy with lr_max = slice(1e-3))\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conclusion**\n", "\n", "- We can verify than the Learning Rates of the 9 first parameters groups are 10 times less than the one of the last parameters group.\n", "- With a smaller Learning Rate for the parameters groups but the last one, the error rate is smaller than the test 1 (same Learning Rate for all parameters groups)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test 3 | lr_max = slice(1e-5,1e-3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Hypothese**\n", "\n", "- Train first parameters group with lr_max = 1e-5 and last one with lr_max = 1e-3. \n", "- Between these 2 parameters groups, the Learning Rate (max) of the others are evenly geometrically spaced between 1e-5 and 1e-3." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "learn.load('my_resnet18_finetuned')\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_losserror_ratetime
00.4353870.5426960.17862000:17
10.3069880.3198510.10622500:17
20.1510530.2345330.07577800:16
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(3, lr_max=slice(1e-3/100,1e-3))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates: last values of cosine annealing for the 1cycle policy with lr_max = slice(1e-5,1e-3)**" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103818059e-10, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 1.1273265478161222e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 1.880494020012536e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 3.1368530849825837e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.232586316170941e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 8.7284800449677e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 1.4559982251924255e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 2.428751421610113e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 4.051401551101539e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (last values of cosine annealing for the 1cycle policy with lr_max = slice(1e-5,1e-3))\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lr_list = list()\n", "for h in learn.opt.hypers:\n", " lr_list.append(h['lr'])\n", "\n", "lr_first = lr_list[0]\n", "lr_last = lr_list[-1]\n", "inter = (lr_last - lr_first) / (len(learn.opt.param_groups) - 1)\n", "lr_list_calculated = [lr_first+i*inter for i in range(len(learn.opt.param_groups))]\n", "\n", "fig, ax = plt.subplots()\n", "p = np.linspace(0,9,10)\n", "ax.plot(p, lr_list, label='last lr values')\n", "ax.plot(p, lr_list_calculated, label='calculated last lr values')\n", "leg = ax.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conclusion**\n", "\n", "- We can verify that the Learning Rates of the parameters groups are **evenly geometrically spaced** (it does not mean linearly spaced) from the smallest value (first group) to the largest one (last group).\n", "- With an incremental Learning Rate from the smallest to the highest value (each parameters groups with a different one), the error rate is smaller than the ones of the previous test 1 and 2." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test 4 | array of 10 learning rates | lr_max = [lr1,lr2,lr3,lr4,lr5,lr6,lr7,lr8,lr9,lr10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each parameters group has a Learning Rate different from the smallest to the highest value given by a list." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "learn.load('my_resnet18_finetuned')\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(10,\n", " [1e-05,\n", " 0.00012,\n", " 0.00023,\n", " 0.00034,\n", " 0.00045000000000000004,\n", " 0.0005600000000000001,\n", " 0.00067,\n", " 0.0007800000000000001,\n", " 0.0008900000000000001,\n", " 0.001])" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr_lastlayer = 1e-3\n", "lr_firstlayer = lr_lastlayer / 100\n", "inter = (lr_lastlayer - lr_firstlayer) / (len(learn.opt.param_groups) - 1) # 9 intervals\n", "lr_max = [lr_firstlayer + i*inter for i in range(len(learn.opt.param_groups) - 1)]\n", "lr_max.append(lr_lastlayer)\n", "len(lr_max), lr_max" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_losserror_ratetime
00.6883181.2707680.34709100:16
10.5016380.4227700.14073100:16
20.2396550.2729790.08863300:16
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "learn.fit_one_cycle(3, lr_max=lr_max)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**List of Learning Rates: last values of cosine annealing for the 1cycle policy with lr_max = [lr1,lr2,lr3,lr4,lr5,lr6,lr7,lr8,lr9,lr10]**" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "number of parameters groups: 10\n", "0 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103818059e-10, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "1 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 8.10977412458167e-09, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "2 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 1.554373373877137e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "3 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 2.297769335300173e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "4 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 3.041165296717788e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "5 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 3.7845612581299815e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "6 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 4.527957219563859e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "7 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 5.271353180976053e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "8 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.014749142399089e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n", "9 {'wd': 0.01, 'sqr_mom': 0.99, 'lr': 6.758145103822125e-08, 'mom': 0.9499942417973141, 'eps': 1e-05}\n" ] } ], "source": [ "# Check the number of parameters groups...\n", "print(f'number of parameters groups: {len(learn.opt.param_groups)}')\n", "\n", "# ... and the list of Learning Rates (last values of cosine annealing for the 1cycle policy with lr_max = [lr1,lr2,lr3,lr4,lr5,lr6,lr7,lr8,lr9,lr10])\n", "for i,h in enumerate(learn.opt.hypers):\n", " print(i,h)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWsAAAEICAYAAACZJtWMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3dd3RU5drG4d+bAuk9hCQkNCmCkEASDOJRLIggAoKiUj0fUkUUEA9ggSOIYuwKKmCjgx4bXbAgKgFCkRp674E0QsqU9/sjEANSJpDJnkmea60szczO7Duz4OadPXv2o7TWCCGEcGwuRgcQQghxbVLWQgjhBKSshRDCCUhZCyGEE5CyFkIIJyBlLYQQTkDKWgghnIBdy1opNUgplaKUyldKfWGHx6+hlFqklEpXSh1XSn2olHIr7f0IIYTR7L2yPgqMAz6z0+NPAk4C4UAscCcw0E77EkIIw9i1rLXW32itvwNOX3qfUqqdUmqjUipDKfWnUqrxdeyiJjBPa52ntT4OLAEa3mBsIYRwOIYcs1ZKNaVwtd0PCAY+AX5QSlUu4UO9BzymlPJSSkUCbSgsbCGEKFeMeoOxD/CJ1nq11tqitf4SyAcSS/g4KyhcSWcBh4EU4LtSTSqEEA7AqLKuDgw7fwgkQymVAUQBEQBKqV+VUvoKX7+f38YFWAp8A3gDIUAgMMGQ30gIIezIqLI+BLyqtQ4o9uWltZ4NoLVuqbVWV/i6/fxjBFFY8B9qrfO11qeBz4G2xvxKQghhP/Y+dc9NKeUBuAKuSimP86fWTQH6K6VuVYW8lVIPKKV8bX1srXUasA8YcH4/AUAv4C97/C5CCGEke6+sXwRygRFA9/P//6LWOoXC49YfAunAbuCJ63j8TsD9wKnzj2EGhtxwaiGEcDBKhg8IIYTjk4+bCyGEE7jmR7OVUmcvuckTmKS1fvpqPxcSEqJr1KhxA9GEEKLiWbduXZrWOvTS269Z1lprnwv/r5TyBk4AX13r52rUqEFKSkpJcwohRIWmlDpwudtLehjkYQqvxbHyhhMJIYSwWUnLuhcwTV/hXUmlVN/zV9lLOXXq1I2nE0IIAZSgrJVS0RRe1e7LK22jtZ6stY7XWseHhv7jkIsQQojrVJKVdU/gd631PnuFEUIIcXkluVB/T+D1G92h1Wrl8OHD5OTk3OhDCeGQ3N3dqVKlCn5+fkZHEeWITWWtlLoNiMSGs0CuJS0tDaUU9erVw8VFTvMW5YvWmtzcXI4cOQIghV2BfLfhCElLd3A0I5eIAE+Gt65HxyaRpfb4trZlL+AbrXX2je4wIyODsLAwKWpRLiml8PLyIjIykpMnTxodR5SR7zYcYeQ3mzmSkYsGjmTkMvKbzXy34Uip7cOmxtRa99Na9yiNHVosFtzd3UvjoYRwWJ6enphMJqNjiDKStHQHuSYLEaTxsts0XLGQa7KQtHRHqe3DqEkxRuxWiDIjf8YrlmMZOXR3XcaPlZ/nMddfaHD+cy1HM3JLbR8yCVwIIW7AwZ0bmVtpHAkuqfxmacQo85McPv9p8YgAz1Lbjxw4LqZGjRosX77c7vtRSrF7926772f//v0opTCbzXbflxAVjsVMxo8TCJt5L3XVIf5j7k9P04iiovZ0d2V463qltjsp61L2xBNP8OKLLxodQwhhR5l718HUuwn4czzHwu7ANCCZ5p0HExnghQIiAzx5rVOjUj0bxKkOg9j71BhHYLFYcHV1NTqGEOIy8nJz2DBjFAmHp2H2CsatyzRqNOgAQMeq2LWPnGZlXRanxhS3Zs0amjdvTkBAAOHh4QwaNIiCggKg8FzaIUOGUKVKFfz9/WncuDFbtmxh8uTJzJw5kzfeeAMfHx8efPDBa+7niSeeYMCAAbRt2xZvb29++eWXi+6fM2cO8fHxF932zjvv0L59ewAWLlxIkyZN8PPzIyoqijFjxlxxX5ce5hkzZgzdu3cv+j45OZnbbruNgIAAYmJi+PXXX4vu++KLL6hVqxa+vr7UrFmTmTNnXvN3E6I8SV2zjBNJzWh+5As2BLYm58k/4HxRlwWHWFk/+smqf9zWrnE4PZrXILfAwhOfr2HDwQwKLNaLtsk1WZiwJJXZaw7+4+e7J1bnwZiIolV4Sbm6uvLOO+8QHx/P4cOHadOmDZMmTeLZZ5/lxx9/5LfffmPnzp34+/uTmppKQEAAffv25c8//6RatWqMGzfO5n3NmjWLRYsWsWDBgqJ/EC5o3749ffr0YdeuXdSpU6do+2HDhgHg7e3NtGnTaNiwIVu2bKFVq1bExsbSsWPHEv2+R44c4YEHHmD69Oncf//9/PTTT3Tu3JnU1FS8vLwYPHgwa9eupV69ehw7dowzZ86U6PGFcFY6P5u1nw4h/sTXnFAhbL7rcxLu7FTmOZxmZX1pUV9wPDPPLvuLi4sjMTERNzc3atSoQb9+/VixYgVQ+HHi7OxsUlNT0Vpz8803Ex4eft376tChAy1atMDFxQUPD4+L7vPy8qJDhw7Mnj0bgF27dpGamlq0sm7ZsiWNGjXCxcWFxo0b8/jjjxflLIkZM2bQtm1b2rZti4uLC61atSI+Pp5FixYB4OLiwpYtW8jNzSU8PJyGDRte9+8rhNPY/RNq0m0knPyatVU64zcshUYGFDU4yMp6br/mV7zPs5Irc/s1p8XrP3PkMucsRgR4XvXnr/fUmZ07dzJ06FBSUlI4d+4cZrOZuLg4AO6++24GDRrEU089xcGDB3nooYd48803r/ujxVFRUVe9v2vXrgwbNoyXX36ZWbNm0bFjR7y8vABYvXo1I0aMYMuWLRQUFJCfn88jjzxS4gwHDhzgq6++Yv78+UW3mUwm7rrrLry9vZk7dy5vvvkmvXv3pkWLFrz11lvUr1+/xPsRwhlknj7BzunPkJCxGILrwL8Xc2v1K/dMWXCalfXw1vXwdL/4jbfSPjWmuAEDBlC/fn127dpFVlYW48ePp/hlvAcPHsy6devYunUrO3fuJCkpCbi+D0Nc62fuu+8+0tLS2LhxI7Nnz6Zr165F93Xt2pX27dtz6NAhMjMz6d+/P1caguzt7c25c+eKvj9+/HjR/0dFRdGjRw8yMjKKvnJychgxYgQArVu3ZtmyZRw7doz69evTp0+fEv+eQjiD9Uu+wPRBM5qkL+WvGr2h/+8og4sanKisOzaJ5LVOjYgM8LTbqTHFZWdn4+fnh4+PD6mpqXz00UdF961du5bVq1djMpnw9vbGw8Oj6AyOsLAw9u7dW6pZ3NzcePjhhxk+fDhnzpyhVatWF+UMCgrCw8ODNWvWMGvWrCs+TmxsLHPmzMFkMpGSksLXX39ddF/37t2ZP38+S5cuxWKxkJeXx6+//srhw4c5ceIEP/zwAzk5OVSuXBkfHx85Y0WUO2nHDrI+6UGaJj9DhmswBzovJOaJt8Hd49o/XBa01nb5iouL05ezbdu2y97uCKpXr66XLVumtdZ6xYoVul69etrb21vffvvt+qWXXtItWrTQWmu9fPly3ahRI+3t7a2Dg4N1165ddXZ2ttZa6507d+qYmBjt7++vO3TocNn9AHrXrl1aa6179eqlX3jhhWtm++233zSgBw4ceNHtX331lY6OjtY+Pj76gQce0E899ZTu1q2b1lrrffv2aUCbTCattdZ79uzRzZo1097e3rpt27b66aefLtpWa62Tk5P1HXfcoQMDA3VISIhu27atPnDggD569Ki+4447tJ+fn/b399d33nmn3rp1a0me2grJkf+si2KsVq3Xz9B546rpvJeD9Z9fvqhNBfmGxQFS9GU6VekrvGS+UfHx8fpyA3O3b9/OzTffbJd9CuFI5M+64zu6fwceS4YQdPwPdFRzjrd8g/DajQ3NpJRap7WOv/R2h3iDUQghypLVYmHNvAk0Tn0XrRSWNkm4JjxJuANfulnKWghRoRxIXU/u/54i0bSNTZ4JhD4+Ee/q9jlRoTRJWQshKgaLiYzlbxL+55ucUx6sbfIa8Q/2Rznwaro4KWshRLmXsWctAT8OIeDEZvaH34dPx7dJqHr1zzc4GilrIUS5lXfuLBtnjCT+yAzM3iG4PTqTGje3MzrWdZGyFkKUS9uSl+C7dAiJ+ihrgh6gXo/38A8KNTrWdbO5rJVSjwGjgWjgOPCE1nqlvYIJIYStil8++SZ/zX/c53Dv2fkcVWFsvnsaze4ou6vj2YtNZa2UagVMAB4F1gDXf9UiIYQoRRcun5xrstDSZSOv5n1KeN4Zlvo+xL/6v0eEj7/REUuFrW+D/hd4RWudrLW2aq2PaK3tcyFpJ1Qa48C++OILbr/99lJKdHXXGvcl482EM0lauoPKpgzecp/EF5XeIEd70LlgDK+Ye+JVTooabChrpZQrEA+EKqV2K6UOK6U+VEqV3iRIUSKXDg1wRDLeTJQFbbUSm/ULyysPp73LKt4zP0S7gvFs0HVKdbK4I7DlMEgY4A48DPwLMAHfAy8CLxTfUCnVF+gLEB0dXapBRcUi483EtZw6up/DMwYysdIfbLLWpLtpFKn6794pzcnijsCWwyAX/nn6QGt9TGudBrwNtL10Q631ZK11vNY6PjTU+d51PXToEJ06dSI0NJTg4GAGDRoEwJ49e7j77rsJDg4mJCSEbt26kZGRcdnHsFgsjB8/ntq1a+Pr60tcXByHDh267Evxli1bMnXq1Ms+zjPPPENUVBR+fn7ExcWxcmXhe7lLlixh/PjxzJ07Fx8fH2JiYgDIzMykd+/ehIeHExkZyYsvvojFYinK9NxzzxESEkKtWrVYuHChzc+JjDeT8WYOR2tYPw3/z27n5pw1fBfaj8f1uIuK2p6XTzbKNVfWWut0pdRhwD5XfFo8Ao5vtstDF6naCNq8ftVNLBYL7dq14+6772b69Om4urpy4UJUWmtGjhzJHXfcQVZWFp07d2bMmDG8++67/3ict99+m9mzZ7No0SLq1q3Lpk2b8PLyIjs7u0SRExISePnll/H39+e9997jkUceYf/+/dx///2MGjWK3bt3M2PGjKLte/XqRVhYGLt37yYnJ4d27doRFRVFv379mDJlCgsWLGDDhg14e3vTuXNnm3PIeDMZb+ZIjuzdjtfSoQSe+BP36i04cecbdKx1C1SAYdq2vsH4OfC0UqqKUioQeBZYYL9YZW/NmjUcPXqUpKSkomtUX3jD76abbqJVq1ZUrlyZ0NBQhg4desXRWVOnTmXcuHHUq1cPpRQxMTEEBweXOE/37t0JDg7Gzc2NYcOGkZ+fz44dOy677YkTJ1i8eDHvvvsu3t7eVKlShSFDhjBnzhwA5s2bx7PPPktUVBRBQUGMHDnS5hwy3kzGmzkCi9lM8qyxBH55J5VObMDS9m1UrwVUrXULUHi9+z9G3M2+1x/gjxF3l7uiBtvPsx4LhAA7gTxgHvBqqSS4xoq3rBw6dIjq1avj5vbPp+TkyZMMHjyYlStXkp2djdVqJTAw8IqPU7t27RvO89ZbbzF16lSOHj2KUoqsrCzS0tIuu+2BAwcwmUwXFaXVai0aF3b06NGLRodVr17d5hwy3kzGmxlt//Z15P1vIInmVDZ63UrVrh/hHXXjf8ecjU0ra621SWs9UGsdoLWuqrUerLW2z6Rag0RFRXHw4MHLnt41cuRIlFJs2rSJrKwsZsyYccXRWVFRUezZs+cft3t7ewNccaxWcStXrmTChAnMmzeP9PR0MjIy8Pf3L9rnpWPAoqKiqFy5MmlpaUUjubKysti6dSsA4eHhHDp0qGj7gwf/OQ3+SmS8mYw3M4y5gIzF44iY04ow8xFS4t4gZvgSqlbAogYnGutlb82aNSM8PJwRI0aQk5NDXl4ef/zxB1A4OsvHx4eAgACOHDlSVEiX8+STT/LSSy+xa9cutNZs2rSJ06dPExoaSmRkJDNmzMBisfDZZ59dttQv7M/NzY3Q0FDMZjOvvPIKWVlZRfeHhYWxf/9+rNbCie/h4eHcd999DBs2jKysLKxWK3v27Ck6DNClSxfef/99Dh8+THp6Oq+/bvurGRlvJuPNjJC+KxkmtyRgdRJHwlthHbia+Af7Oc0V8uyh4v7ml3B1dWX+/Pns3r2b6OhoqlWrxty5cwEYPXo069evx9/fnwceeIBOna48in7o0KF06dKF++67Dz8/P3r37k1ubuEJNVOmTCEpKYng4GC2bt3KbbfddtnHaN26NW3atKFu3bpUr14dDw+Piw4RXHh5HxwcTNOmTQGYNm0aBQUFNGjQgMDAQB5++GGOHTsGQJ8+fWjdujUxMTE0bdr0qvkv9eabbzJr1ix8fX3p06cPjz76aNF9WVlZ9OnTh8DAQKpXr05wcDDPPfccAL1792bbtm0EBASU+E2+q+natSvLly/nkUceueiQ1aRJk3j55Zfx9fXllVdeoUuXLld8jLFjx7Jnzx4CAwMZPXr0RSv0qKgovv/+e8aPH09oaChRUVEkJSVhtVqxWq289dZbREREEBQUxIoVK5g0aVKp/W4CcnOySf54IH4z7sd0Ng0em03N/nMJrlL+jkGXlIz1EsJO5M96yWz9cxH+y4ZSTR9jTdCD1O/5Hn4BJX9z3tnJWC8hhEPSeZmkTB1MQtp3HFFhbLl3Os1ub290LIcjZS2EMM7OpagFQ4jLOsaqsMeJ7ZlEpLev0akckpS1EKLMpZ86xp7pg4jPWg5VGuDSZTrNq8UZHcuhyRuMQogyo61WUhZOgYnNaJz5CxtrD4C+K0CK+poMWVlrra/rPFwhnMWF0yrF304e2cfRmQOIP7eKnW51Se80kdgGzYyO5TTKvKw9PDw4ffo0wcHBUtii3NFaYzKZOHHiRNEHoSo8rWH9lwQsfgFfUwHJdYeS8OgLuF7m08Liysr82apWrRqHDx/m1KlTZb1rIcqEm5sb/v7+hISEGB3FcEf2bsVryVACTybjXuNfnGmZRGINOZ3xepR5Wbu7u1OzZs2y3q0QogxZzGbWznmVmF0fYlFumB94F7f4J6gqr6avm7wOEUKUqn3b1mL6ZiCJ5p1s9G5ORLeP8ImUBdqNkrIWQly34lPFo/3deCfiZ27ZO4Uc5c26hDdp2qZ3hb6eR2mSshZCXJfiU8Vj1G4m5E6h/r5DrA9oRc3uHxAXev3XNhf/JGUthLguSUt3oE3nGOX2Nb1dF3GCQP5dMJyd+bfxhxR1qZOyFkJcl+isFGZVmkJ1l5PMNN/Da+bHOYsXqpxNFXcUUtZCiBLRuRmkTH2a2ZV+YJ81jEfzX2K1/vt0vPI2VdxRSFkLIWy3Y3HhhZeyT7DYrwsj0x8gQ7sX3V0ep4o7CilrIcQ1nT5xmP0zniYu+2eo0hCXx2bRJrIp+RVgqrijkLIWQlyRtlpZt2AytdePo5HOZWPdQcQ+OhrcKgGFU8WlnMuGTWWtlPoVSAQuTJM9orWW1zpClGPHD+3m+KyBxOeuZodbfTw6TyL2Zrk6nlFKsrIepLWearckQgjHYLXCus8JXvoSfiYzyfWGk9BlhFx4yWDy7AshihzavRmfpUMIPLUWt5otSb9rAonR9Y2OJSjZ8IHXlFJpSqk/lFItL7eBUqqvUipFKZUiV9UTwnmYTQUkT3uJ0Ol34XZqK+YHP0D1/I4qUtQOw9aV9X+AbUAB8BgwXykVq7XeU3wjrfVkYDIUTjcvzaBCCPvYuyUZy3dPkWjezQbvFlTrPgnfiBpGxxKXsKmstdari337pVLqcaAt8IFdUgkh7M+cT+bS8USt+YAs5cO6Zu/S9P5ecuElB3W9x6w1IBemFcJJnUldSdDyYfin7WBftfYEPpREXEhVo2OJq7hmWSulAoBbgRUUnrr3KHAH8Kx9owkhSltOdgabpw+n2YmvMPlG4N7tf9Ssc6/RsYQNbFlZuwPjgPqABUgFOmqtd9gzmBCidG3+7VuCf3meRH2S1aGdaNjzbdz9Ao2OJWx0zbLWWp8CEsogixDCDvS5dNZNfYr4Mws5pCLYdv9cbk283+hYooTkPGshyrPt81ELh9H0bBqrInrRpMdrRHnK1HVnJGUtRDmUdvwgB2cMounZFVC1ES5d59E8ItboWOIGyDk6QpQj2mpl7XcTcf84kYbZf7KhzmDo8wtIUTs9WVkLUU4cP7iTk7MGkJCXQqp7Azwf/ogm9aSkywspayGcUPGp4pH+lZlYdwMNtr2Nn9lCcv0RNOvyPC6urkbHFKVIyloIJ1N8qngtdZQJuZOJ2byTE6EtUO3fIzGqjtERhR1IWQvhZJKW7sBkymeg60KecfuGXCoxrKA/yVn38YcUdbklZS2EkwnI3M4nlSZzi8t+FlmaMdr0BKcIQGXmGR1N2JGUtRDOwpRH5pJxfF9pImfwo1/Bsyy1Niu6W6aKl29S1kI4gdPbfiP4p6H4n95FSlBbBqZ14qTVq+h+mSpe/sl51kI4sJysdFZP7E3g3PYUFORBj2+Jf2Y2ozrdRmSAJwqIDPDktU6NZHBtOScrayEc1KZf/0eVX/9Dgk5jTZWHadTzTSr5BgAyVbwikrIWwsHoc2fYMGUATdOXcMClGjvu/4rEZq2MjiUMJmUthCPZ+h1q0XPEnDvDqsh/06T7q3jIhZcEUtZCOIS0owc4OPMpmuashPAYXLt/Q/PwxkbHEg5E3mAUwkDaamXNt+9TaXJzGp5NZkPdZ+HJn0GKWlxCVtZCGOTo/h2cnt2fZvnr2eZ+C75dJtGkTozRsYSDkrIWoqxZLbBmCqHLxuBv1qxu8AIJDw+TCy+Jq5KyFqIMHUhdj/+yoQSc3oDbTa3IbPk6t1a7yehYwglIWQtRBkwF+aTMGk3cvinkKg/MHT7GLfYxQpQyOppwEiUqa6VUHWAz8LXWurt9IglRvuzeuBKX+YNobtnPOt+WVO8xEbewakbHEk6mpCvricBaewQRotwx5ZK5eCw11n1EuvJnw20TibtP1jji+thc1kqpx4AM4E9ADrIJcRVpW34m5Ofn8D+zh73RnQh+KIkmQSFGxxJOzKayVkr5Aa8A9wC9r7JdX6AvQHR0dGnkE8KpZGeeYev0oSSmfUuBbxSVen5PrVotjY4lygFbPxQzFvhUa33oahtprSdrreO11vGhoaE3nk4IJ/LXz1+R804CzU59R3LYY5j7/QG1WhodS5QT11xZK6VigXuBJvaPI4Tz0TmnWT9lAHEZS9nvEsXOtv8jMf4eo2OJcsaWwyAtgRrAQVV4mpEP4KqUaqC1bmq/aEI4nuJTxSP8PXin0T6abXuN2Nx0VkU9SdNuY6ns4XXtBxKihGwp68nAnGLfP0dheQ+wRyAhHFXxqeJVSGf0uc9olrKO9IBbCOz5Pc2r3mJ0RFGOXbOstdbngHMXvldKnQXytNan7BlMCEeTtHQHuSYzXVx/5UW3mVTCxKumrizN7cRvUtTCzkr8CUat9Rg75BDC4blm7mem+1RauG4l2Xoz/zH14YCuisosMDqaqADk4+ZCXIvVAqs/YWnlMZi1C6NMvZltuQt9/mQqmSouyoKUtRBXsX97CgHLhhJw5i8yw+7k0SNdOGAJLLpfpoqLsiLDB4S4jIL8PFZ99jwRc+6DM/swPzSFqv2/Z0jnu2SquDCErKyFuMTO9StwXzCY5tb9pPjdQ60eH+BWpbCQZaq4MIqUtRAXFJwjc/F/qb3+E06rQDbe/jHx9z5udCohAClrIQA4tXk5ob8Mx//MXvZWf4SQThOIDQg2OpYQRaSsRYWWlXGa7dOHcOvp78n3q07lXvOpVfMOo2MJ8Q9S1qLC+uvnOYT/NpJ4nc6q8K7E9ngDvH2NjiXEZUlZiwpH56SxYXI/mmYuZ59LdTLafU7zpi2NjiXEVUlZi4pDa9jyP9Ti54nJzWRVdF/iuo2lUmUPo5MJcU1S1qJCOHF4D8dnDiQmNxki43Dt9SHNwxoYHUsIm0lZi3LNarGw9pt3abAlibpY2NjgeWIfGQEurkZHE6JEpKxFuXV49xYy5w3g1oJNbPGIJejRj4itJatp4ZykrEX5Y7VA8iSqLh+Hv0WxpvEYEh56BuUiV1cQzkvKWpQre7etIWjZUALSN+Narw2mlq/TLLyG0bGEuGFS1qJcyM87x/qZLxN38DNylA+WTp/i2qgzQYWj6IRwelLWwuntSPmZyoueobn1ICn+rajd4wNcQ8ONjiVEqZKyFs6rIIesRWOos2EKp1QQf93xCfF3P2Z0KiHsQspaOIWLpooHePJCg5O03fcafun72VvzUUIfep0Y/yCjYwphNzaVtVJqBnAP4A0cB97QWk+1ZzAhLig+VdyPHAadnULb9b+Q7hlN4BOLqFWjhdERhbA7W1fWrwG9tdb5Sqn6wK9KqQ1a63V2zCYEcGGquIV7XdYxzv0zQsngY/ODzLF05VcpalFB2FTWWuutxb89/1UbkLIWdpefcZwP3L/kQddktluj6WMaxmZdC5WljY4mRJmx+Zi1UmoS8ATgCWwAFl1mm75AX4Do6OjSSSgqLG21orZ8zXKP5/HUubxpeoSPLQ9iPv/HVqaKi4rE5rLWWg9USj0NNAdaAvmX2WYyMBkgPj5elj3iuh0/tJsTswYQk7sGS2AsndN6sMXy9+l4MlVcVDQl+vyt1tqitf4dqAYMsE8kUZFZLRZWz3sDn6m3U+fcX2xoOILgp3/myU5tZKq4qNCu99Q9NwqPWQtRag7t3kz2vAHcWrCZzR5NCH7sY5rUrA/IVHEhrlnWSqkqwN3AAiAXuBd4HOhq32iiwrCYYdWHRPw8nhyrG2tixpLQYZBceEmIYmxZWWsKD3l8TOFhkwPAs1rr7+0ZTFQMezYnE/LTUPwztuJSvx3mlq/RrKq8OS3Epa5Z1lrrU8CdZZBFVCD5eedYP+MF4g99SbbywdL5C1xv6SgXXhLiCuTj5qLMpa5djufiZ2huPczagPup2/M9XIOrGh1LCIcmZS3KTv5ZshaNpu7GTzmpQtjU8jMSWnY2OpUQTkHKWpSJkxsWU2XF8/hlHGRvra5UeWg8Vf0CjY4lhNOQshZ2lXnmFDumDaZZxiLy/WtT+d9LqFW9udGxhHA6cm6UsJv1S6djej+epulLWBXRC91/JUhRC3FdZGUtSp3OPsHGyX1pmv0re1xrkdF+JsrugggAAA63SURBVM1jbjc6lhBOTcpalBpttaI2zUUtGUGjgnOsqvkU8Y+Pxr1SZaOjCeH0pKxFqTh2YAenZg+kcV4KRCXi1v4DmofWNTqWEOWGlLW4IVaLhTVfJdFo+zv4o9nYaBSxnYaDfFRciFIlZS2u28GdG8n5aiCJpq1s8own9PFJxFaXy5YKYQ9S1qLkLCb48wMif3mNs1Z31sa+Snz7gXLhJSHsSMpaXNWlU8UHNcih7Z7x+Gduw6VBB/Sdr5IQFmV0TCHKPSlrcUXFp4pXpoCuZ+fwyLoFZCg/LA9Pw/WWDgQYHVKICkLKWlzRhanicWoHb7hPprbLMeaZ72SqV29+vKWD0fGEqFCkrMUVZWacYYzbXHq6LuOIDqF7wUh+tzZCZRmdTIiKR8paXNbxdQtZ7jGCKjqNLy33kWR+lHN4ADJVXAgjSFmLi2SePsHOaU+TkLmUM5416Hb2aVaZbyq6X6aKC2EMOddKAKC1Zv3izzF/kEBsxnJWRf4br8F/8minh2WquBAOQFbWAp11jE2T+9D07Ep2ud5Eese5NG9UeHW8jk28pZyFcABS1hWYtlpRf81CLR1Fw4I8kmsNJv7xl3Bzr2R0NCHEJa5Z1kqpysAk4F4gCNgNjNJaL7ZzNmFHR/elcmZOf27J3wDRt+HW/gMSQ2669g8KIQxhy8raDThE4YTzg0BbYJ5SqpHWer8dswk7sJjNrP1qAo1T38MfxcaYl4jtOFQuvCSEg7tmWWutc4AxxW5aoJTaB8QB++0TS9jDgdR15H79FInm7fzlmUBY14+Ija5jdCwhhA1KfMxaKRUG1AW2Xua+vkBfgOjo6BsOJ0qJxQS/v0u1FRPItlYmpenrxLXrJxdeEsKJlKislVLuwEzgS6116qX3a60nA5MB4uPjdakkFDdk18aVVPnlOfwzU3Fp2AnVchzxoXJ2hxDOxuayVkq5ANOBAmCQ3RKJUpF37iwbpv+HhKOzyHDxx9JlJq4N2uFvdDAhxHWxqayVUgr4FAgD2mqtTXZNJW7I1lWL8ftxKM31UdYEtaNez/dwDQwxOpYQ4gbYurL+CLgZuFdrnWvHPOJG5GWRteBFGm75kqMqjC33TKPZv+TqeEKUB7acZ10d6AfkA8cLF9kA9NNaz7RjNlECx9Z+T/jKUfhlHWHvTb2o2nEsET5y0EOI8sKWU/cOAOpa2wljpJ86xp7pTxOftYy8gDp49F5GragEo2MJIUqZnLvlpLTVSsrCT9ETmxGT+TPJUU+i+v8GUtRClEtybRAnpLOOsumTJ4nP+YNdbnXIfGgiiQ1vNTqWEMKOpKydiLZaURumo358iYamPFbdNISER0fJhZeEqACkrB1Y8cnisb7pvGz9hCaWTVD9dtzav0/z4NpGRxRClBEpawd1YbJ4vsnE/7ku4bmCeZhx5fuo4XToNUouvCREBSNl7aCSlu6gmvkAb1SaTBOX3Sy3NOFF0//hmlaNDlLUQlQ4UtaOyFxA5+yZDKr0Ldl4MbhgED9YmwMKlSGfSRKiIpKydjA716+g6q/DGOq+i+8st/GKqSdn8Cu6XyaLC1ExSVk7iNycbP6aNpyE43M44xLEnwkfMjI5lFwsRdvIZHEhKi4pawew9Y+F+C8fSqI+zuqQDtzc4x1uCwjmtYi/zwaJCPBkeOt6MrxWiApKytpIeZlkzR9Fw60zOKyqsqXVTG5t0a7o7o5NIqWchRCAlLVhjq75hoiVL+B39jh76/wf4R1foZq3r9GxhBAOSsq6jJ05eYS9058mPvsn8oLq4/HkDGpFxhkdSwjh4OSE3TKirVZS5n+CmnQrjbN+ZVV0P1z6rQApaiGEDWRlXQZ05mG2TO5NfE4yO9zqUbnzJJrfHG90LCGEE5GytiNttaDWf4n68WXqm00k132OhC4jcXWTp10IUTLSGnZyePcWMucNoGHBJqh5B+4Pvk9iUE2jYwkhnJSUdSkzmwpImfsqsbsm4qfc2dhkLLHtnwYlw3aEENdPyroU7du6GvO3T5Fo3sUG79uo1v0jYiNqGB1LCFEO2HQ2iFJqkFIqRSmVr5T6ws6ZnI85H34ZT/Wv2xJsPsG6Zm8T+9xCQqWohRClxNaV9VFgHNAakCsJFbMj5SfCVwzHL3sPqnEX3FqOIy4ozOhYQohyxqay1lp/A6CUigeq2TWRkzh3NpNN05+n2fG5pLkE4f3YXFzr31/s+nhCCFF6SvWYtVKqL9AXIDo6ujQf2qFsWfk9QT8PJ1GfIDn0IRr2eBtX/yCjYwkhyrFSLWut9WRgMkB8fLwuzcd2CLkZZP0wglu2z+aQimBr6zkkNm9jdCohRAUgZ4PY6Gjy10T8/gJ+OafYW68PER3GEOXlY3QsIUQFIWV9GcWnit/sm8col8+5PX8luUEN8Ow6h1oRTYyOKISoYGwqa6WU2/ltXQFXpZQHYNZam+0ZzggXpornmsx0dPmD0QXT8CKPH4L/jzb9X4dKlY2OKISogGxdWb8IjC72fXfgv8CY0g5ktKSlOwg0nWCS+6fc5foX66x1eN7Ul7xzN9FeiloIYRBbT90bQzks5ktpq4W7s3/gP5Vn44Lmv6YefGlpjRUXmSouhDCUHLM+79Cuv8ieN5Cx7ltYabmFkeYnOayrFN0vU8WFEEaq8GVtNhWQMnssTfZ8hL+qxLfRoxi1rzG52lq0jUwVF0IYrUKX9d4tyVi/HUiiZQ8bfG4nqtskHoqojtogU8WFEI6lYpa1KQ9+S6LG7+9yRvuwPvE9mrTuhTp/GVOZKi6EcDQVrqxT1ywj8rfn8T27FxXzOJVavkLTwCrX/kEhhDBQhSnrnOwMtkwbRsLJ/3HKJQSvrl/jWreVXHhJCOEUKkRZb17xDSG/PM+tnGJ1aGca9nwLV79Ao2MJIYTNyndZ56aT/f3zNEqdx0GXSLa3nsett7Y2OpUQQpRYuS3rI3/OJfLPl/DNSWNv/X5EdBiNh6e30bGEEOK6lLuyTjt+kIMznqLp2d/IDW6IZ7evqBUeY3QsIYS4ITbNYHQG2mpl7Xcf4P5xIg2zV7Gq5lO49fsFpKiFEOVAuVhZ6/T9bJvcm4TcFLa7N8Dr4Y9oXi/W6FhCCFFqnLqsrRYLLilTUcv/S12rldX1R5DwyPO4uLoaHU0IIUqV05b1gR0bOff1AG42bYPa9+D+4LvcGlB+5z4KISo2pytrU0E+62b9l6b7PiFXVWZj3OvEtusP5z8qLoQQ5ZFTlfXuv35H/fA0iZa9rPe9k+juE4mtGmV0LCGEsDvnKGtTLqyYQK0/3ueM9mVD8w9o2rqn0amEEKLMOHxZb1+9lGq/PY9vzn5UbDc8Wr5Ck4AQo2MJIUSZcqiyLj5VvJaf5j/uc7gvZz7HVBW8un2Da5178DE6pBBCGMBhyvrvqeIW7nT5i1fzPyUi/zRLfB/iX/3exdU3wOiIQghhGJs+waiUClJKfauUylFKHVBKdS3tIElLd5BrsjDebSpfVppArq7MwwWjGWvuibcUtRCigrN1ZT0RKADCgFhgoVLqL6311tIKcvT89PD9Ooz3zR350PwQBbjLVHEhhMCGslZKeQOdgVu01meB35VSPwA9gBGlFSQiwJMjGblMtjz4j9uFEKKis+UwSF3AorXeWey2v4CGl26olOqrlEpRSqWcOnWqREGGt66Hp/vFHxOXqeJCCFHIlrL2ATIvuS0T8L10Q631ZK11vNY6PjQ0tERBOjaJ5LVOjYgM8EQBkQGevNapkQyuFUIIbDtmfRb+MarQD8gu7TAyVVwIIS7PlpX1TsBNKVWn2G0xQKm9uSiEEOLqrlnWWusc4BvgFaWUt1KqBdABmG7vcEIIIQrZOilmIOAJnARmAwNK87Q9IYQQV2fTedZa6zNARztnEUIIcQXlZgajEEKUZ0prbZ8HVuoUcOA6fzwESCvFOM5Ono+/yXNxMXk+LlYeno/qWut/nPtst7K+EUqpFK11vNE5HIU8H3+T5+Ji8nxcrDw/H3IYRAghnICUtRBCOAFHLevJRgdwMPJ8/E2ei4vJ83Gxcvt8OOQxayGEEBdz1JW1EEKIYqSshRDCCUhZCyGEE3Cosi6LWY/OQilVWSn16fnnIVsptUEp1cboXEZTStVRSuUppWYYncVoSqnHlFLbz/992aOU+pfRmYyilKqhlFqklEpXSh1XSn2olHKYgeClwaHKmotnPXYDPlJK/WMiTQXhBhwC7gT8gZeAeUqpGgZmcgQTgbVGhzCaUqoVMAH4N4WDQO4A9hoayliTKLzQXDiFc2LvpPACdOWGw5R1sVmPL2mtz2qtfwcuzHqscLTWOVrrMVrr/Vprq9Z6AbAPiDM6m1GUUo8BGcBPRmdxAP8FXtFaJ5//83FEa33E6FAGqgnM01rnaa2PA0u4zOhBZ+YwZU0JZj1WREqpMAqfowp5aVqllB/wCjDM6CxGU0q5AvFAqFJqt1Lq8PmX/RV5uvR7wGNKKS+lVCTQhsLCLjccqaxtnvVY0Sil3IGZwJda61Sj8xhkLPCp1vqQ0UEcQBjgDjwM/IvCl/1NgBeNDGWwFRQu7LKAw0AK8J2hiUqZI5V1mc16dCZKKRcKp/IUAIMMjmMIpVQscC/wjtFZHETu+f9+oLU+prVOA94G2hqYyTDn/44spXCilTeFV94LpPCYfrnhSGUtsx4voZRSwKcUrqQ6a61NBkcySkugBnBQKXUceA7orJRab2Qoo2it0ylcPcrHjwsFAVHAh1rrfK31aeBzytk/Xg5T1jLr8bI+Am4GHtRa515r43JsMlCbwpf7scDHwEKgtZGhDPY58LRSqopSKhB4FlhgcCZDnH9lsQ8YoJRyU0oFAL0ofM+r3HCYsj5PZj2ep5SqDvSjsJyOK6XOnv/qZnC0Mqe1Pqe1Pn7hi8JDZnla61NGZzPQWApPYdwJbAc2AK8amshYnYD7gVPAbsAMDDE0USmTCzkJIYQTcLSVtRBCiMuQshZCCCcgZS2EEE5AyloIIZyAlLUQQjgBKWshhHACUtZCCOEEpKyFEMIJ/D+VPzoIJbc/uwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lr_list = list()\n", "for h in learn.opt.hypers:\n", " lr_list.append(h['lr'])\n", "\n", "lr_first = lr_list[0]\n", "lr_last = lr_list[-1]\n", "inter = (lr_last - lr_first) / (len(learn.opt.param_groups) - 1)\n", "lr_list_calculated = [lr_first+i*inter for i in range(len(learn.opt.param_groups))]\n", "\n", "fig, ax = plt.subplots()\n", "p = np.linspace(0,9,10)\n", "ax.plot(p, lr_list, 'o--', label='last lr values')\n", "ax.plot(p, lr_list_calculated, label='calculated last lr values')\n", "leg = ax.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Conclusion**\n", " \n", "- We can verify that the Learning Rates of the groups of parameters are distributed linearly from the smallest value (first group) to the largest (last group) exactly as we passed them.\n", "- However, the error rate is higher that the one of the test 3." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Test 5 | array of 9 learning rates | lr_max = [lr1,lr2,lr3,lr4,lr5,lr6,lr7,lr8,lr9]" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "learn.load('my_resnet18_finetuned')\n", "learn.unfreeze()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(9,\n", " [1e-05,\n", " 0.00013375,\n", " 0.0002575,\n", " 0.00038125,\n", " 0.000505,\n", " 0.00062875,\n", " 0.0007525,\n", " 0.0008762500000000001,\n", " 0.001])" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr_lastlayer = 1e-3\n", "lr_firstlayer = lr_lastlayer / 100\n", "inter = (lr_lastlayer - lr_firstlayer) / ( len(learn.opt.param_groups) - 2 ) # 8 intervals\n", "lr_max = [lr_firstlayer + i*inter for i in range(len(learn.opt.param_groups) - 2)]\n", "lr_max.append(lr_lastlayer)\n", "len(lr_max), lr_max" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "ename": "AssertionError", "evalue": "Trying to set 9 values for lr but there are 10 parameter groups.", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_one_cycle\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlr_max\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlr_max\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m~/.conda/envs/fastai2/lib/python3.7/site-packages/fastcore/utils.py\u001b[0m in \u001b[0;36m_f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 429\u001b[0m \u001b[0minit_args\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 430\u001b[0m \u001b[0msetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minst\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'init_args'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minit_args\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 431\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0minst\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mto_return\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 432\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_f\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 433\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/.conda/envs/fastai2/lib/python3.7/site-packages/fastai2/callback/schedule.py\u001b[0m in \u001b[0;36mfit_one_cycle\u001b[0;34m(self, n_epoch, lr_max, div, div_final, pct_start, wd, moms, cbs, reset_opt)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[0;34m\"Fit `self.model` for `n_epoch` using the 1cycle policy.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopt\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcreate_opt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 109\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_hyper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'lr'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlr\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlr_max\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m \u001b[0mlr_max\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 110\u001b[0m \u001b[0mlr_max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'lr'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mh\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhypers\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m scheds = {'lr': combined_cos(pct_start, lr_max/div, lr_max, lr_max/div_final),\n", "\u001b[0;32m~/.conda/envs/fastai2/lib/python3.7/site-packages/fastai2/optimizer.py\u001b[0m in \u001b[0;36mset_hyper\u001b[0;34m(self, k, v)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mL\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0muse_list\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparam_lists\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhypers\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34mf\"Trying to set {len(v)} values for {k} but there are {len(self.param_lists)} parameter groups.\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 45\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_set_hyper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAssertionError\u001b[0m: Trying to set 9 values for lr but there are 10 parameter groups." ] } ], "source": [ "learn.fit_one_cycle(3, lr_max=lr_max)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**AssertionError Explication**: we can not pass an array of 9 learning rates because there are 10 parameters groups." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## END" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }