Last active
November 1, 2024 18:51
-
-
Save fmussari/d485075eec7d76cdc043d830d20db5a7 to your computer and use it in GitHub Desktop.
Lesson 18 homework - Creating schedulers for miniai
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "eb9b36e6", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|default_exp scheds" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "c3749067", | |
"metadata": {}, | |
"source": [ | |
"# Schedulers for miniai" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "d54e45e9", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"import torch\n", | |
"import fastcore.all as fc\n", | |
"import numpy as np\n", | |
"from torch import tensor\n", | |
"import math\n", | |
"\n", | |
"from miniai.datasets import *\n", | |
"from miniai.conv import *\n", | |
"from miniai.learner import *\n", | |
"from miniai.activations import *\n", | |
"from miniai.init import *\n", | |
"from miniai.sgd import *" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "bdc8ebe1", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import pickle,gzip,math,os,time,shutil,torch,matplotlib as mpl,numpy as np,matplotlib.pyplot as plt\n", | |
"\n", | |
"from collections.abc import Mapping\n", | |
"from pathlib import Path\n", | |
"from operator import attrgetter,itemgetter\n", | |
"from functools import partial\n", | |
"from copy import copy\n", | |
"from contextlib import contextmanager\n", | |
"\n", | |
"import torchvision.transforms.functional as TF,torch.nn.functional as F\n", | |
"from torch import tensor,nn,optim\n", | |
"from torch.utils.data import DataLoader,default_collate\n", | |
"from torch.nn import init\n", | |
"from torch.optim import lr_scheduler\n", | |
"from torcheval.metrics import MulticlassAccuracy\n", | |
"from datasets import load_dataset,load_dataset_builder" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "fef94c6e", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"from fastcore.test import test_close\n", | |
"\n", | |
"torch.set_printoptions(precision=2, linewidth=140, sci_mode=False)\n", | |
"torch.manual_seed(1)\n", | |
"\n", | |
"import logging\n", | |
"logging.disable(logging.WARNING)\n", | |
"\n", | |
"set_seed(42)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "71a5c58a", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"application/vnd.jupyter.widget-view+json": { | |
"model_id": "a6d44a6d6857472aa8d872b9be257c18", | |
"version_major": 2, | |
"version_minor": 0 | |
}, | |
"text/plain": [ | |
" 0%| | 0/2 [00:00<?, ?it/s]" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"xl,yl = 'image','label'\n", | |
"name = \"fashion_mnist\"\n", | |
"dsd = load_dataset(name)\n", | |
"\n", | |
"bs = 1024\n", | |
"xmean,xstd = 0.28, 0.35\n", | |
"\n", | |
"@inplace\n", | |
"def transformi(b): b[xl] = [(TF.to_tensor(o)-xmean)/xstd for o in b[xl]]\n", | |
"\n", | |
"tds = dsd.with_transform(transformi)\n", | |
"dls = DataLoaders.from_dd(tds, bs, num_workers=4)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "9b6445da", | |
"metadata": {}, | |
"source": [ | |
"## Simple Scheduler" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "34291280", | |
"metadata": {}, | |
"source": [ | |
"### Exponential scheduler for learning rate\n", | |
"An exponential scheduler implementation that works with PyTorch's optimizers and miniai callbacks." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "00b78f8d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# function from fastai schedule\n", | |
"def sched_exp(start, end, pos): return start * (end/start) ** pos" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "c3913f98", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"class ExpSchedLR():\n", | |
" def __init__(self, optimizer, T_max, start=None, end=0):\n", | |
" self.optimizer = optimizer\n", | |
" self.final_i = T_max - 1\n", | |
" self.end = end\n", | |
" if not start:\n", | |
" self.starts = [group['lr'] for group in optimizer.param_groups]\n", | |
" else: \n", | |
" self.starts = [start for group in optimizer.param_groups]\n", | |
" self._step_count = 0\n", | |
" self.step()\n", | |
"\n", | |
" def step(self):\n", | |
" values = self.get_lr()\n", | |
" for data in zip(self.optimizer.param_groups, values):\n", | |
" pg, lr = data\n", | |
" pg['lr'] = lr\n", | |
" self._step_count += 1\n", | |
"\n", | |
" def get_lr(self):\n", | |
" pos = self._step_count\n", | |
" return [sched_exp(start, self.end, pos/self.final_i) for start in self.starts]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "0040ae4a", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"metrics = MetricsCB(accuracy=MulticlassAccuracy())\n", | |
"\n", | |
"act_gr = partial(GeneralRelu, leak=0.1, sub=0.4)\n", | |
"iw = partial(init_weights, leaky=0.1)\n", | |
"\n", | |
"def _lr(cb): return cb.pg['lr']\n", | |
"rec = RecorderCB(lr=_lr)\n", | |
"rec.order = -1 # To record before the update by the scheduler" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "7ce874b0", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"epochs = 1\n", | |
"tmax = epochs * len(dls.train)\n", | |
"\n", | |
"sched = partial(ExpSchedLR, T_max=tmax, end=0.005)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "85309779", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"set_seed(42)\n", | |
"model = get_model(act_gr, norm=nn.BatchNorm2d).apply(iw)\n", | |
"xtra = [BatchSchedCB(sched), rec]\n", | |
"cbs = [DeviceCB(), metrics, ProgressCB(plot=True)]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "4e3acb25", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
"<style>\n", | |
" /* Turns off some styling */\n", | |
" progress {\n", | |
" /* gets rid of default border in Firefox and Opera. */\n", | |
" border: none;\n", | |
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n", | |
" background-size: auto;\n", | |
" }\n", | |
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n", | |
" background: #F44336;\n", | |
" }\n", | |
"</style>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: left;\">\n", | |
" <th>accuracy</th>\n", | |
" <th>loss</th>\n", | |
" <th>epoch</th>\n", | |
" <th>train</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0.804</td>\n", | |
" <td>0.528</td>\n", | |
" <td>0</td>\n", | |
" <td>train</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>0.850</td>\n", | |
" <td>0.401</td>\n", | |
" <td>0</td>\n", | |
" <td>eval</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"learn = TrainLearner(model, dls, F.cross_entropy, lr=2e-2, cbs=cbs+xtra, opt_func=optim.AdamW)\n", | |
"learn.fit(epochs)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "4bcd93e8", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rec.plot()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "f0ac8a31", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.02, 0.005)" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rec.recs['lr'][0], rec.recs['lr'][-1]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "7ccea988", | |
"metadata": {}, | |
"source": [ | |
"## Flexible Scheduler\n", | |
"Very much based on fastai's schedulers, implemented for miniai." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "1ee14f7a", | |
"metadata": {}, | |
"source": [ | |
"### Definition of schedulers\n", | |
"#### Exponential" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "aebdf39f", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"def sched_exp(start, end, gamma, pos): \n", | |
" assert gamma>=0 and gamma<=1\n", | |
" pos,final_pos = pos*100, 100\n", | |
" theta = gamma**final_pos / final_pos\n", | |
" return (start-end)*gamma**pos + (end-start)*theta*pos + end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "8f4e9ca5", | |
"metadata": {}, | |
"source": [ | |
"PyTorch's `ExponentialLR` implementation differs from fastai's `SchedExp`. `ExponentialLR` has a `gamma` parameter that modifies the convergence speed, but unlike `SchedExp`, doesn't converge to a defined end value.\n", | |
"\n", | |
"Here, for miniai, the implementation uses a `gamma` parameter that modifies the curve, and also has a defined end value.\n", | |
"\n", | |
"The problem is that a `gamma` distributed between 0 and 1 doesn't produce smooth steps for `sched_exp` results." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "266f2c1a", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"xi = torch.linspace(0, 1, 100)\n", | |
"gammas = [round(g.item(), 1) for g in torch.linspace(0, 1, 11)]\n", | |
"\n", | |
"for g in gammas:\n", | |
" yi = [sched_exp(0.3,0.1,g,i) for i in xi]\n", | |
" plt.plot(xi, yi, label=l)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4c27c63d", | |
"metadata": {}, | |
"source": [ | |
"So, after iterating with excel trendlines and `gamma`values, a transformation was found that generates a smooth distribution for `sched_exp`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "e56a103f", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"def smooth_gamma(gamma):\n", | |
" gamma = 1 + 7 * gamma\n", | |
" return 0.000268*gamma**3-0.005078*gamma**2+0.039773*gamma+0.864643\n", | |
"\n", | |
"def sched_exp(start, end, gamma, pos): \n", | |
" assert gamma>=0 and gamma<=1\n", | |
" pos,final_pos = pos*100, 100\n", | |
" g = smooth_gamma(gamma)\n", | |
" theta = g**final_pos / final_pos\n", | |
" return (start-end)*g**pos + (end-start)*theta*pos + end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "c1a73bdb", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"xi = torch.linspace(0, 1, 100)\n", | |
"gammas = [round(g.item(), 1) for g in torch.linspace(0, 1, 11)]\n", | |
"\n", | |
"for g in gammas:\n", | |
" yi = [sched_exp(0.3,0.1,g,i) for i in xi]\n", | |
" plt.plot(xi, yi, label=l)\n", | |
" plt.legend(gammas, title='gamma');" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "e4f41ff6", | |
"metadata": {}, | |
"source": [ | |
"#### Cosine, Poly, Linear, No and fastai's Exponential" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "531578c3", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"def sched_cos(start, end, pos): return end + (start - end)/2 * (1 + math.cos(pos*math.pi))\n", | |
"def sched_poly(start, end, power, pos): return start + (end - start) * pos ** power\n", | |
"def sched_fastai_exp(start, end, pos): return start * (end/start) ** pos" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "564fc084", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class _Annealer:\n", | |
" def __init__(self, f, start, end): fc.store_attr()\n", | |
" def __call__(self, pos): return self.f(start=self.start, end=self.end, pos=pos)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "6ec83ba6", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"def SchedCos(start, end): return _Annealer(sched_cos, start, end)\n", | |
"def SchedExp(start, end, gamma): return _Annealer(partial(sched_exp, gamma=gamma), start, end)\n", | |
"def SchedExpFastai(start, end): return _Annealer(sched_fastai_exp, start, end)\n", | |
"def SchedLin(start, end): return _Annealer(partial(sched_exp, gamma=1), start, end)\n", | |
"def SchedNo(start): return _Annealer(partial(sched_poly, power=0), 0, start)\n", | |
"def SchedPoly(start, end, power): return _Annealer(partial(sched_poly, power=power), start, end)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "4bd5c9bb", | |
"metadata": {}, | |
"source": [ | |
"#### Ploting different schedulers" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "b7196603", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"xi = torch.linspace(0, 1, 100)\n", | |
"\n", | |
"labels = \"Cos Exp(0.25) Exp(0.5) ExpFastai Lin Poly(0.5) No\".split()\n", | |
"scheds = [SchedCos(0.3, 0.1), SchedExp(0.3, 0.1, .25), \n", | |
" SchedExp(0.3, 0.1, .5), SchedExpFastai(0.3, 0.1), \n", | |
" SchedLin(0.3, 0.1), SchedPoly(0.3,0.1,0.5), SchedNo(0.3)]\n", | |
"\n", | |
"for sched, l in zip(scheds, labels):\n", | |
" yi = [sched(i) for i in xi]\n", | |
" plt.plot(xi, yi, label=l)\n", | |
" plt.legend();" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "59e6e43a", | |
"metadata": {}, | |
"source": [ | |
"### Classes to combine basic scheduler's functions" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "c9538e2a", | |
"metadata": {}, | |
"source": [ | |
"Based on fastai's `combine_scheds` and `combined_cos` functions:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "9f4b85a6", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class CombineScheds:\n", | |
" \"Combine `scheds` according to `pcts` in one class\"\n", | |
" def __init__(self, pcts, scheds):\n", | |
" assert sum(pcts) == 1.\n", | |
" assert (len(pcts)>=2) and (len(pcts)==len(scheds))\n", | |
" pcts = tensor([0] + pcts)\n", | |
" assert torch.all(pcts >= 0)\n", | |
" self.scheds = scheds\n", | |
" self.pcts = torch.cumsum(pcts, 0)\n", | |
" self.pct_lim = len(self.pcts) - 2\n", | |
" \n", | |
" def _get_idx_apos(self, pos):\n", | |
" idx = min((pos >= self.pcts).nonzero().max(), self.pct_lim)\n", | |
" actual_pos = (pos-self.pcts[idx]) / (self.pcts[idx+1]-self.pcts[idx])\n", | |
" return idx, actual_pos\n", | |
" \n", | |
" def __call__(self, pos):\n", | |
" idx, actual_pos = self._get_idx_apos(pos)\n", | |
" return self.scheds[idx](pos=actual_pos.item())\n", | |
"\n", | |
" @property\n", | |
" def start(self): return self.scheds[0].start\n", | |
"\n", | |
" @start.setter\n", | |
" def start(self, value): self.scheds[0].start = value" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "09ee28b2", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class CombinedCos(CombineScheds):\n", | |
" \"Return a scheduler with cosine annealing from `start`→`middle` & `middle`→`end`\"\n", | |
" def __init__(self, pct, start, middle, end):\n", | |
" super().__init__([pct,1-pct], [SchedCos(start, middle), SchedCos(middle, end)])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "69775719", | |
"metadata": {}, | |
"source": [ | |
"### Helper functions and hyperparams' mapping to PyTorch's optimizers" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "5bf2f188", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"# hyperparameters map\n", | |
"mai_hp_map = {'lr': 'lr', 'momentum': 'mom', 'betas__0': 'mom', 'betas__1': 'sqr_mom'}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "d4634b98", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"# based on fastai's functions (some are the same as fastai's)\n", | |
"def detuplify_pg(d):\n", | |
" res = {}\n", | |
" for k,v in d.items():\n", | |
" if k == 'params': continue\n", | |
" if fc.is_listy(v): \n", | |
" res.update(**{f'{k}__{i}': v_ for i,v_ in enumerate(v)})\n", | |
" else: res[k] = v\n", | |
" return res\n", | |
"\n", | |
"def set_item_pgs(pgs, k, vs):\n", | |
" for v, pg in zip(vs, pgs):\n", | |
" if '__' not in k: pg[k] = v\n", | |
" else:\n", | |
" name,idx = k.split('__')\n", | |
" pg[name] = tuple(v if i==int(idx) else pg[name][i] for i in fc.range_of(pg[name]))\n", | |
"\n", | |
"def get_item_pgs(pgs, k):\n", | |
" res = []\n", | |
" for pg in pgs:\n", | |
" if '__' not in k: res.append(pg[k])\n", | |
" else:\n", | |
" name,idx = k.split('__')\n", | |
" res.append(pg[name][int(idx)])\n", | |
" return np.array(res)\n", | |
"\n", | |
"def mapping(pgs, scheds):\n", | |
" n_pgs = len(pgs)\n", | |
" fwd_map = {k: v for k,v in mai_hp_map.items() if k in detuplify_pg(pgs[0]).keys()}\n", | |
" bwd_map = {k: v for v,k in fwd_map.items() if k in scheds.keys()}\n", | |
" return fwd_map, bwd_map\n", | |
"\n", | |
"def format_start(v, n_pgs):\n", | |
" v = [v] if isinstance(v, (int, float)) else v\n", | |
" v = list(v)\n", | |
" if len(v)==1: v = v * n_pgs\n", | |
" assert len(v) == n_pgs, f\"Trying to set {len(v)} values, but there are {n_pgs} parameter groups.\"\n", | |
" return np.array(v)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "2be7a14c", | |
"metadata": {}, | |
"source": [ | |
"### Parameter Scheduler Class" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "b0ed691c", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class ParamScheduler:\n", | |
" \"Scheduler for multiple hyperparameters and groups\"\n", | |
" def __init__(self, scheds, total_steps, optimizer):\n", | |
" self.opt = optimizer\n", | |
" self.final_step = total_steps - 1\n", | |
" self.scheds = scheds\n", | |
" self.pgs = optimizer.param_groups\n", | |
" self._step_count = 0\n", | |
" self._init_sched()\n", | |
" self.step()\n", | |
"\n", | |
" def step(self):\n", | |
" pct_train = self._step_count / self.final_step\n", | |
" if pct_train <= 1: \n", | |
" for k, sched in self.scheds.items():\n", | |
" vs = sched(pct_train)\n", | |
" set_item_pgs(self.pgs, self.bwd_map[k], vs)\n", | |
" self._step_count += 1\n", | |
"\n", | |
" def _init_sched(self):\n", | |
" self.fwd_map, self.bwd_map = mapping(self.pgs, self.scheds)\n", | |
" n_pgs = len(self.pgs)\n", | |
" for k, sched in self.scheds.items():\n", | |
" if not sched.start: sched.start = get_item_pgs(self.pgs, self.bwd_map[k])\n", | |
" else: sched.start = format_start(sched.start, n_pgs)\n", | |
" if isinstance(sched, CombineScheds):\n", | |
" for sc in sched.scheds[1:]: sc.start = format_start(sc.start, n_pgs)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "747ebfe7", | |
"metadata": {}, | |
"source": [ | |
"### `OneCycleSched` and `FlatCosSched`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "7e298ab3", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class OneCycleSched(ParamScheduler):\n", | |
" \"OneCycle ParamScheduler\"\n", | |
" def __init__(self, optimizer, total_steps, lr_max=None, div=25., div_final=1e5, pct_start=0.25, moms=None):\n", | |
" fc.store_attr()\n", | |
" self.pgs = optimizer.param_groups\n", | |
" self._init_onecycle_sched()\n", | |
" super().__init__(self.scheds, total_steps, optimizer)\n", | |
" \n", | |
" def _init_onecycle_sched(self):\n", | |
" if not self.lr_max: self.lr_max = get_item_pgs(self.pgs, 'lr')\n", | |
" if not self.moms: self.moms = (0.95, 0.85, 0.95)\n", | |
" self.scheds = {'lr': CombinedCos(self.pct_start, self.lr_max/self.div, self.lr_max, self.lr_max/self.div_final),\n", | |
" 'mom': CombinedCos(self.pct_start, *self.moms)}" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "7c73f1d1", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"#|export\n", | |
"class FlatCosSched(ParamScheduler):\n", | |
" \"FlatCos ParamScheduler\"\n", | |
" def __init__(self, optimizer, total_steps, lr=None, div_final=1e5, pct_start=0.75):\n", | |
" fc.store_attr()\n", | |
" self.pgs = optimizer.param_groups\n", | |
" self._init_flatcos_sched()\n", | |
" super().__init__(self.scheds, total_steps, optimizer)\n", | |
" \n", | |
" def _init_flatcos_sched(self):\n", | |
" if not self.lr: self.lr = get_item_pgs(self.pgs, 'lr')\n", | |
" self.scheds = {'lr': CombinedCos(self.pct_start, self.lr, self.lr, self.lr/self.div_final)}" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "d3d94a50", | |
"metadata": {}, | |
"source": [ | |
"## Training with flexible schedulers" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "61d0763e", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"epochs = 1\n", | |
"tmax = epochs * len(dls.train)\n", | |
"\n", | |
"metrics = MetricsCB(accuracy=MulticlassAccuracy())\n", | |
"act_gr = partial(GeneralRelu, leak=0.1, sub=0.4)\n", | |
"iw = partial(init_weights, leaky=0.1)\n", | |
"\n", | |
"def _lr(cb): return cb.pg['lr']\n", | |
"def _beta1(cb): return cb.pg['betas'][0]\n", | |
"rec = RecorderCB(lr=_lr, mom=_beta1)\n", | |
"rec.order = -1\n", | |
"\n", | |
"cbs = [DeviceCB(), metrics, ProgressCB(plot=True)]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "81d86d92", | |
"metadata": {}, | |
"source": [ | |
"### `ParamScheduler` with `CombineScheds`\n", | |
"\n", | |
"`ParamScheduler` receives a dictionary with the hyperparameters to modify as keys, and the scheds as its values. In this example receives a `CombineScheds` for both `lr` and `mom`. \n", | |
"\n", | |
"If the `start` is `None`, the scheduler takes the start value from the optimizer, for the given parameter." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "5947009d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sched = {'lr': CombineScheds([.3,.7], [SchedExp(None, 1e-2, gamma=.5), \n", | |
" SchedCos(1e-2, 1e-3)]),\n", | |
" 'mom': CombineScheds([.3,.7], [SchedLin(None, .85), \n", | |
" SchedCos(.85, .95)])}\n", | |
"\n", | |
"sched_cb = partial( ParamScheduler, sched, tmax )\n", | |
"xtra = [BatchSchedCB(sched_cb), rec]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "7b3d0104", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
"<style>\n", | |
" /* Turns off some styling */\n", | |
" progress {\n", | |
" /* gets rid of default border in Firefox and Opera. */\n", | |
" border: none;\n", | |
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n", | |
" background-size: auto;\n", | |
" }\n", | |
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n", | |
" background: #F44336;\n", | |
" }\n", | |
"</style>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: left;\">\n", | |
" <th>accuracy</th>\n", | |
" <th>loss</th>\n", | |
" <th>epoch</th>\n", | |
" <th>train</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0.806</td>\n", | |
" <td>0.530</td>\n", | |
" <td>0</td>\n", | |
" <td>train</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>0.848</td>\n", | |
" <td>0.412</td>\n", | |
" <td>0</td>\n", | |
" <td>eval</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"model = get_model(act_gr, norm=nn.BatchNorm2d).apply(iw)\n", | |
"\n", | |
"cbs = [DeviceCB(), metrics, ProgressCB(plot=True)]\n", | |
"learn = TrainLearner(model, dls, F.cross_entropy, lr=2.1e-2, cbs=cbs+xtra, opt_func=optim.AdamW)\n", | |
"learn.fit(epochs)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "dd4ed8b6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rec.plot()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "1648cc05", | |
"metadata": {}, | |
"source": [ | |
"### `OneCycle`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "75a2fb51", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sched_cb = partial( OneCycleSched, total_steps=tmax )\n", | |
"xtra = [BatchSchedCB(sched_cb), rec]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "9a7625e2", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
"<style>\n", | |
" /* Turns off some styling */\n", | |
" progress {\n", | |
" /* gets rid of default border in Firefox and Opera. */\n", | |
" border: none;\n", | |
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n", | |
" background-size: auto;\n", | |
" }\n", | |
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n", | |
" background: #F44336;\n", | |
" }\n", | |
"</style>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: left;\">\n", | |
" <th>accuracy</th>\n", | |
" <th>loss</th>\n", | |
" <th>epoch</th>\n", | |
" <th>train</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0.776</td>\n", | |
" <td>0.625</td>\n", | |
" <td>0</td>\n", | |
" <td>train</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>0.850</td>\n", | |
" <td>0.407</td>\n", | |
" <td>0</td>\n", | |
" <td>eval</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"model = get_model(act_gr, norm=nn.BatchNorm2d).apply(iw)\n", | |
"\n", | |
"cbs = [DeviceCB(), metrics, ProgressCB(plot=True)]\n", | |
"learn = TrainLearner(model, dls, F.cross_entropy, lr=2e-2, cbs=cbs+xtra, opt_func=optim.AdamW)\n", | |
"learn.fit(epochs)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "ef91cf94", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAD4CAYAAADvsV2wAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAAs2klEQVR4nO3dd3xV9f3H8dcne5CELAIkQAYzbIiEVVTQCu5VBbVYxB9SwdXlaF0d1i5bW1dxD1QQARFRtCJVREZIwkjYJISEkQVJGBk39/v7I5c2xQiXcJNzx+f5eORB7rnnkvcXwpuT7/2ec8QYg1JKKe/nZ3UApZRS7UMLXymlfIQWvlJK+QgtfKWU8hFa+Eop5SMCrA7Qkri4OJOcnGx1DKWU8hgbNmwoN8bEn24ftyz85ORksrKyrI6hlFIeQ0T2nmkfndJRSikfoYWvlFI+QgtfKaV8hBa+Ukr5CC18pZTyEVr4SinlI7TwlVLKR7jlOvzW+vvnOxnavSNje8YhIlbHUUqpb6mpbaCw/DgVx+o4Xt/I0TobxxwfAf5+zDw/rc2+ttcUfk1tA2+u2ctTn+2gT0IEt41N5qohiYQE+lsdTSnlgxoa7WwuqWJD4WF2lR6loPwYe8qPUX607jtf0ykiuE0LX9zxBigZGRmmNWfa1jY08uHG/by8qoBtB2uIDQ/i5szuTB2dTFyH4DZIqpRSTWyNdrKLjrB2TwVrCyrZsPcwJxoaAYjrEExKXBgpceGkxHUgJS6M+IgQwoP9CQ8KIDw4gPBgf4IDWn+AKiIbjDEZp93Hmwr/JGMM3+yu4JWvC/h8Wyldo0JZetdYosODXJhSKeXrGu2GdQWVLN20n0+2HKTiWD0AfTtHkJkSQ2ZqLOclxxAf0fYHnM4UvtdM6TQnIozuGcfonnFkFVYy5cU13Dc/l1duPQ8/P53bV0qdmy0lVSzYUMyyzQcorakjNNCf8f06cdnALoxOi6VjmHseXHpl4TeXkRzDI5en8/AHeTy3chezx/eyOpJSygPZGu18ln+IV78uZF1hJUEBfozv04nLBnVhQr9OhAW5f526f0IXuGVkD7L2Huapz3YwtHs0Y3rGWR1JKeUhqo438O76It74Zi8lR06QFB3Kry7rxw8yuhEVGmh1vLPiE4UvIjxxzUDy9ldz9zs5fHT39+gcFWJ1LKWUGztWZ+PlVQW8+OUeaupsZKbE8MgV6VzULwF/D50a9onCBwgPDuCFW4Zx5TNfM+vtbN6dMZJAfz3vTCn1v+psjcxdU8SzX+yi4lg9F6cncM+EXgxIjLI62jnzmcIH6Nkpgj9cN4i73snhyY+38fDl6VZHUkq5Cbvd8H52MX/7105KjpxgVGosP5/Yh2Hdo62O5jI+VfgAVwzuyvrCSl5eVcD1w5Po1yXS6khKKYvl76/mV4s3k110hEFJUfzhukGM6RnrdWfs++Scxk8v7kN4kD/Pr9xtdRSllIWO1tn47dJ8rnhmFYUVx/nLDwbzwawxjO3lnZdn8bkjfICosEBuGdWDF7/cw08u7k1yXLjVkZRS7cgYw/K8gzz+YT4HqmqZMqI790/s47br513FJ4/wAaaPTSHA349/fqlH+Ur5kiPH65n9Tg4z38omKjSQ9388mt9fO9Dryx589AgfoFNECDdkJDFv/T7umdBbl2kq5QNW7SznZ+9tpPxoHT+/pA93jEslwIdW6/nOSFtwx7g07AZe/GqP1VGUUm2otqGR3yzN55aX1xIe7M/iWWOYdWFPnyp78PHC7xYTxlWDu/L22iIqHRc9Ukp5l20Hq7nqma95eVUBt47qwdK7vucVa+pbw6cLH+DHF6RxoqGR174usDqKUsrFFueUcPWzX1N5vJ7Xpp3H41cNIDTId++R4VThi8hEEdkuIrtE5IEWno8WkUUisklE1onIgFOe9xeRHBFZ6qrgrtIrIYJL+ifw2upCamobrI6jlHKBepudx5bkce+8XAYlduSju8dyQZ9OVsey3BkLX0T8gWeBSUA6MEVETj1F9SEg1xgzCJgKPH3K8/cAW889btu484KeVNfamLu2yOooSqlzVFpdy00vruG11YVMH5vC3P/LpFOELsoA547wRwC7jDF7jDH1wLvAVafskw58DmCM2QYki0gCgIgkAZcBL7kstYsN7taR7/WK46WvCqh13KFGKeV51hdWctk/VpG3v5q/TxnKw5en6zWzmnHmTyIR2NfscbFjW3MbgWsBRGQE0ANIcjz3N+AXgP10X0REZohIlohklZWVORHLtX58fhrlR+v4aNOBdv/aSqlztzC7mJteXEOH4AAWzxrDlYO7Wh3J7ThT+C2dX3zqfRGfBKJFJBe4C8gBbCJyOVBqjNlwpi9ijJljjMkwxmTEx8c7Ecu1RqXF0i0mlMW5Je3+tZVSrWeM4a+f7eAn8zeS0SOGxXeOoU/nCKtjuSVnTrwqBro1e5wE7G++gzGmGpgGIE0XoChwfEwGrhSRS4EQIFJE3jLG3OKC7C4lIlw1OJHnVu6itKZW5/yU8gB1tkYefH8zC3NKuH54Ek9cM5CgAJ3C+S7O/MmsB3qJSIqIBNFU4kua7yAiHR3PAdwOfGmMqTbGPGiMSTLGJDtet8Idy/6kq4d2xW7gw406raOUuztyvJ6pL69jYU4JP724N3+6fpCW/Rmc8U/HGGMDZgPLaVppM98YkyciM0VkpmO3fkCeiGyjaTXPPW0VuC317BTBgMRIPtBpHaXcWsmRE1z7/Gpyio7w9OQh3DWhl1de3dLVnLqWjjFmGbDslG0vNPv8G+C0dwc3xqwEVp51wnZ29ZBEfvvRVnaXHSUtvoPVcZRSp9hddpQfvrSWmjobb92eyYiUGKsjeQz9+ecUVwzuip/ABzl6lK+Uu9lSUsUNL3xDfaOdeTNGadmfJS38UyREhjA6LY7Fufsx5tTFSEopq6wrqGTKnDWEBPoz/45RpHfVu9WdLS38Flw1pCtFlcfJ2XfE6ihKKWDl9lKmvrKW+Mhg3ps5ilSdbm0VLfwWTBzQmeAAPxbrtI5Slvtky0H+740s0uI7MP+OUXTtGGp1JI+lhd+CiJBALkpPYOmmAzQ0nvYEYaVUG/pky0Fmv53NgMQo3pkxkrgOwVZH8mha+N/h6iGJVB6rZ9XOcqujKOWTPs1rKvuBSVG8cdsIIkMCrY7k8bTwv8P5vePpGBbIIp3WUardfZZ/iFmOI/vXbxtBhJa9S2jhf4egAD8uG9iFT/MPcrTOZnUcpXzGv/IPcefcDaR3jeKN6Xpk70pa+Kdx9dBEahvsfJp30OooSvmEFdsO8eO5G0jvEqnTOG1AC/80hnePpmtUCMu18JVqc9/srmDmW9n07RzJG9MziQrVsnc1LfzT8PMTxvfrxFc7y6mz6Y1RlGorG/cd4fbX19MjJozXbxuhZd9GtPDPYHzfThyvb2TtnkqroyjllXYcquHWV9cRHR7Em9MziQkPOvOLVKto4Z/B6LQ4QgL9WLGt1OooSnmdoorj3PLSWgL9/Zh7eyado/Q+FG1JC/8MQgL9GZMWx+fbDum1dZRyoUPVtdzy8lrqbHbemp5Jj9hwqyN5PS18J4zv14l9lSfYVXrU6ihKeYWqEw1MfXkdFUfreP22EXpLwnaihe+E8X07AfC5Tusodc7qbI3MeCOLPeVH+ecPMxjSraPVkXyGFr4TukSFkt4lkhVbtfCVOhd2u+Gn8zeytqCSP10/mLG94qyO5FO08J00oV8nsvZWcuR4vdVRlPJYv/94K0s3HeCBSX25emii1XF8jha+k8b37YTdwL93lFkdRSmP9MqqAl78qoBbR/XgjnGpVsfxSVr4Thqc1JHY8CBdnqlUKyzbfIDffJTPJf0TeOSK/nrDcYto4TvJz0+4sG8nVm4vw6bXyFfKaRv2VnLvvFyGd4/m6clD8ffTsreKFv5ZmNC3E1UnGsguOmJ1FKU8wr7K48x4YwNdo0J4cWoGIYH+VkfyaVr4Z2FsrzgC/YXPtx2yOopSbq/qRAPTXluPzW545UfnEa2XTLCcFv5ZiAgJZERKjC7PVOoMGhrtzH47m8LyY7xwy3C96bib0MI/S+P7JrCz9ChFFcetjqKUWzLG8NiSPL7aWc4T1w5kVFqs1ZGUgxb+WZrgOOt2hU7rKNWiV74uZO7aImaen8YNGd2sjqOa0cI/S8lx4aTGh+tlFpRqwYpth/jtR/lM7N+ZX1zSx+o46hRa+K1wfu941hVUUtugN0VR6qRdpTXc/U4u6V0ieerGwfjp8ku3o4XfCmPS4qiz2ckuOmx1FKXcQtXxBm5/PYuQQD9enJpBWFCA1ZFUC7TwWyEzNQZ/P+HrXeVWR1HKcrZGO7PfyabkyAleuGU4XTuGWh1JfQenCl9EJorIdhHZJSIPtPB8tIgsEpFNIrJORAY4tncTkS9EZKuI5InIPa4egBUiQgIZ0q0jq3ZVWB1FKcs9+fE2vtpZzm+vHkBGcozVcdRpnLHwRcQfeBaYBKQDU0Qk/ZTdHgJyjTGDgKnA047tNuCnxph+wEhgVguv9Uhj0mLZXHyEqhMNVkdRyjILNhTz0qoCfjQ6mRvP6251HHUGzhzhjwB2GWP2GGPqgXeBq07ZJx34HMAYsw1IFpEEY8wBY0y2Y3sNsBXwimuijukZh93Amj16lK98U07RYR5auJnRabH88rJ+VsdRTnCm8BOBfc0eF/Pt0t4IXAsgIiOAHkBS8x1EJBkYCqxtZVa3MrR7NKGB/qzWeXzlg0prapn51gYSooJ59qZhBPrr24GewJm/pZbWVp16N+8ngWgRyQXuAnJoms5p+g1EOgDvA/caY6pb/CIiM0QkS0Syysrc/5rzQQF+jEiJYZUWvvIxDY12Zs/NoepEA/+8JUOvkeNBnCn8YqD56XJJwP7mOxhjqo0x04wxQ2iaw48HCgBEJJCmsp9rjFn4XV/EGDPHGJNhjMmIj48/u1FYZGzPOHaXHeNgVa3VUZRqN7/7aCvrCiv5w3WDSO8aaXUcdRacKfz1QC8RSRGRIGAysKT5DiLS0fEcwO3Al8aYamm6y8HLwFZjzFOuDO4OxvRsuh+nLs9UvmJRTjGvrS7ktjEpXDXEK96O8ylnLHxjjA2YDSyn6U3X+caYPBGZKSIzHbv1A/JEZBtNq3lOLr8cA/wQGC8iuY6PS10+Cov07RxBTHiQFr7yCVtKqnjg/c1kpsTw4KV9rY6jWsGp0+GMMcuAZadse6HZ598AvVp43Spafg/AK/j5CaPTYvl6dznGGL1tm/Jah4/VM/OtDUSHBfGMvknrsfRv7RyN6RnHoeo6dpcdtTqKUm2i0W64Z14updV1PH/LMOIjgq2OpFpJC/8cjXXM46/aqdM6yjv9/fOdfLmjjEevTGdo92ir46hzoIV/jrrFhNE9Joyvd+sJWMr7rNxeyt9X7OTaYYncNELPpPV0WvguMKZnLGt2V2BrtFsdRSmXKT58nHvn5dInIYLfXT1Q36PyAlr4LjCmZxw1dTY2l1RZHUUpl6izNTJrbjaNjYbnbxlOaJC/1ZGUC2jhu8DoNF2Pr7zLb5bms7G4ij/9YBApceFWx1EuooXvAjHhQaR3idTLLCivsCinmLfWFDFjXCoTB3SxOo5yIS18FxnbK47svUc4Ua+3PVSea8ehGh5auIURyTF6T1ovpIXvIqNSY6lvtJOjtz1UHupYnY0752YTHuzPP24aSoCeXOV19G/URTKSo/ETvT6+8kzGGB5evIXdZUd5evJQEiJDrI6k2oAWvotEhAQyIDGKNQWVVkdR6qzNW7+PhTkl3Duh938uCqi8jxa+C41MjSW36Ai1DTqPrzzH1gPVPLokj7E945g9vqfVcVQb0sJ3oZGpMdQ32snWeXzlIWpqG7hzbjZRoYH8bfIQ/P305CpvpoXvQhnJMfgJrN2j0zrK/RljeHDhZvZWHOMfU4YS10EviubttPBdKDIkkP5do/SNW+UR5q4tYummA/zskj5kpsZaHUe1Ay18FxuZGkPOPp3HV+4tb38Vv16az/m945k5Ls3qOKqdaOG7WGZKLPU2O7n7jlgdRakWHa2zMfvtHKLDAnnqhsH46by9z9DCd7HzUmIQXY+v3JQxhl8uapq3//vkocTqvL1P0cJ3sajQQPp3jdTCV25pftY+Psjdz30X9dZ5ex+khd8GMlNiydH1+MrNbD9Y85/19ndeqOvtfZEWfhsYmRpLnc3ORp3HV27ieL2NWW9n0yE4kL/eqOvtfZUWfhsYkXxyHl/X4yv38MgHeY7r5AzRm5D7MC38NhAVFki/zjqPr9zDopxiFmwo5q4Le+p1cnycFn4bGZkaS3bRYepsOo+vrLOn7Ci/XNR0ffu7J/SyOo6ymBZ+GxmZGuOYx9f73Cpr1DY0MvvtHIID/Hh6yhC9vr3Swm8rI3Q9vrLY75dtJf9ANX/+wWC6RIVaHUe5AS38NtIxLIi+nSNZW6CFr9rfJ1sO8vo3e5k+NoUJ/RKsjqPchBZ+GxqZGsOGvTqPr9pX8eHj/GLBRgYlRXH/xL5Wx1FuRAu/DWWmxFLbYGdTsc7jq/bR0GjnnndzsRv4x5ShBAXoP3H1X/rd0IZGpMQAsFbn8VU7+du/drBh72GeuHYgPWLDrY6j3IwWfhuKCQ+iT0IEa/U+t6odrNpZznMrdzP5vG5cObir1XGUG3Kq8EVkoohsF5FdIvJAC89Hi8giEdkkIutEZICzr/V2mY55/IZGu9VRlBcrq6nj3nm59IzvwKNX9Lc6jnJTZyx8EfEHngUmAenAFBFJP2W3h4BcY8wgYCrw9Fm81qtlpsRyvL6RzSU6j6/aht1u+Mn8XGpqG3jmpmGEBvlbHUm5KWeO8EcAu4wxe4wx9cC7wFWn7JMOfA5gjNkGJItIgpOv9Wr/ncfXaR3VNuZ8tYevdpbz6BX96dM5wuo4yo05U/iJwL5mj4sd25rbCFwLICIjgB5AkpOvxfG6GSKSJSJZZWVlzqX3APERwaTFh+t6fNUmsosO8+fl27lsYBemjOhmdRzl5pwp/Jauo2pOefwkEC0iucBdQA5gc/K1TRuNmWOMyTDGZMTHxzsRy3NkpsaSVXiYRnuLQ1eqVapONHD3Ozl0jgrhiWsHIqKXPFan50zhFwPNDx2SgP3NdzDGVBtjphljhtA0hx8PFDjzWl+QmRLD0Tob+furrY6ivIQxhgfe38TBqlr+MWUoUaGBVkdSHsCZwl8P9BKRFBEJAiYDS5rvICIdHc8B3A58aYypdua1vmCk41ZyOq2jXGXu2iI+3nKQn1/Sh6Hdo62OozzEGQvfGGMDZgPLga3AfGNMnojMFJGZjt36AXkiso2mFTn3nO61rh+Ge0uIDCE5NkxviKJcYuuBan69NJ9xveP5v++lWh1HeZAAZ3YyxiwDlp2y7YVmn38DtHix7ZZe64syU2L5JO8gdrvBT28vp1rpeL2N2W9nExUayFM3DNbvJXVW9EzbdpKZGkPViQa2HayxOoryYI8tyWNP+TH+duMQ4jrorQrV2dHCbyeZOo+vztEHuSXMzypmtt6qULWSFn47SewYSlJ0qJ6ApVqlsPwYDy3cTEaPaO7RWxWqVtLCb0eZKbGsK6zEGF2Pr5xXZ2tk9jvZBPj78fSUoXqrQtVq+p3TjjJTY6g8Vs/O0qNWR1Ee5PfLtrGlpOlWhYkd9VaFqvW08NvRyBTHPL5eH185aXneQV5bXchtY1K4OF1vVajOjRZ+O+oWE0rnyBC9Pr5ySvHh4/z8vY0MTIzi/kl9rI6jvIAWfjsSETJTY1hboPP46vQaGu3c/U4OdgPP3DSU4AC95LE6d1r47SwzJZaymjoKyo9ZHUW5sb98uoPsoiM8eZ3eqlC5jhZ+O8tMdVwfX6d11Hf4944yXvj3bqaM6M7lg/RWhcp1tPDbWWpcOPERwazRN25VCw5W1XLfvFz6JETw6BU+dXM41Q608NuZiDAqNZbVuyt0Hl/9D5tj3r62oZFnbx5GSKDO2yvX0sK3wKi0pnn83WU6j6/+66//2sG6wkqeuGYgPTt1sDqO8kJa+BYYnda0Hv8bndZRDv/eUcazX+xm8nnduHpoi3cBVeqcaeFboHtMGF2jQlizWwtf/Xfevm/nCB67sr/VcZQX08K3gIgwMi2WNXsqsOt9bn1a83n7Z27SeXvVtrTwLTIqNZaKY/XsKNXr4/uypz7TeXvVfrTwLTLq5Dy+Tuv4rBXbDvHcSp23V+1HC98iSdFhdI8J08L3UcWHj3PfvI2kd4nUeXvVbrTwLTQqNZa1BZU06jy+T6m32Zn1dg52u+E5XW+v2pEWvoVGpcVSdaKBrQeqrY6i2tETy7aycd8R/vSDQSTH6XVyVPvRwreQzuP7no82HeC11YVMH5vCxAFdrI6jfIwWvoUSIkNIjQvXE7B8xO6yo/xiwUaGde/IA5P6Wh1H+SAtfIuNSotlXUEltka71VFUGzpR38isudkEBfjxzE3DCNT70ioL6HedxUalxXK0zsbmkiqro6g2YozhoUWb2X6ohr9NHkpXvS+tsogWvsVGpup1dbzdm2v2siinhJ9c1Jvze8dbHUf5MC18i8V1CKZ3Qgd949ZLbdhbya8/zGdC307MurCn1XGUj9PCdwOjUmPJKjxMvU3n8b1JWU0dd87NJjE6lKduHIKfn1gdSfk4LXw3MCotjhMNjWwqPmJ1FOUitkY7d72TTdWJBp6/eThRoYFWR1JKC98djEyNQQRW67SO1/jT8u2s2VPJ764eSHrXSKvjKAU4WfgiMlFEtovILhF5oIXno0TkQxHZKCJ5IjKt2XP3ObZtEZF3RCTElQPwBh3DgujXOZLVu8utjqJc4KNNB/jnl3v44cgeXDc8yeo4Sv3HGQtfRPyBZ4FJQDowRUROvbvyLCDfGDMYuAD4i4gEiUgicDeQYYwZAPgDk12Y32t8r1ccG/Ye5lidzeoo6hxsPVDNz97byPAe0fzq8n5Wx1HqfzhzhD8C2GWM2WOMqQfeBa46ZR8DRIiIAB2ASuBkcwUAoSISAIQB+12S3MuM6x1PQ6NhjS7P9FhHjtcz480sIkMDeP7mYQQH6EXRlHtxpvATgX3NHhc7tjX3DNCPpjLfDNxjjLEbY0qAPwNFwAGgyhjz6Tmn9kIZydGEBvrz5Y4yq6OoVmh6kzaHQ1V1PH/LcDpF6sylcj/OFH5La8lOvZ7vJUAu0BUYAjwjIpEiEk3TTwMpjufCReSWFr+IyAwRyRKRrLIy3yu94AB/RqbG8OVOncf3RH9cvp2vdpbzm6v7M6x7tNVxlGqRM4VfDHRr9jiJb0/LTAMWmia7gAKgL3ARUGCMKTPGNAALgdEtfRFjzBxjTIYxJiM+3jfPRhzXO56C8mMUVRy3Ooo6Cx/kljDH8Sbtjed1tzqOUt/JmcJfD/QSkRQRCaLpTdclp+xTBEwAEJEEoA+wx7F9pIiEOeb3JwBbXRXe24xznHb/752+9xOOp9pSUsX9729iRHIMD19+6loGpdzLGQvfGGMDZgPLaSrr+caYPBGZKSIzHbv9BhgtIpuBz4H7jTHlxpi1wAIgm6a5fT9gThuMwyukxoWTFB2q8/georSmlhlvZBEdFsSzNw8jKEBPa1HuLcCZnYwxy4Blp2x7odnn+4Hvf8drHwUePYeMPkNEGNc7niW5+2lotOsldN1YbUMjd7y5gcrj9SyYOZr4iGCrIyl1RtoobmZcr3iO1tnI3nvY6ijqOxhjeHDhZnKKjvDXG4YwIDHK6khKOUUL382M7hmLv5/wpc7ju63n/72bRTkl/PTi3kwaqLcpVJ5DC9/NRIYEMqx7R77cocsz3dGneQf50/LtXDm4K7PH6+WOlWfRwndD43rFs7mkivKjdVZHUc3k76/m3nm5DEqM4o/XD6Jp4ZlSnkML3w2dXJ65Sk/CchuHqmu5/fX1RIYE8uLUDEIC9bIJyvNo4buhAYlRRIcF6vJMN3GszsZtr62n6kQDL92aoZdNUB5LC98N+fsJY3vF8+XOcuz2U69iodrTyWvkbDtYwzM3D9MVOcqjaeG7qfN7x1N+tI6tB6utjuKzjDE89mEeK7aV8uur+nNhn05WR1LqnGjhu6lxveIAdLWOhV76qoC31hRxx/mp3JzZw+o4Sp0zLXw31SkyhL6dI3Qe3yLLNh/gd8u2ctnALtx/SV+r4yjlElr4buz83vFk7a2kurbB6ig+ZV1BJffNy2V4j2j+csNg/Px0+aXyDlr4buzi9AQaGg1fbCu1OorP2HqgmumvrycxOlSXXyqvo4XvxoZ1jyY+IphPthy0OopP2Fd5nFtfWUd4UABvTs8kJjzI6khKuZQWvhvz8xMu6Z/Ayu1lnKhvtDqOVys/WsfUV9ZRZ7PzxvQRJHYMtTqSUi6nhe/mJvbvwomGRr2YWhs6Wmdj2qvrOVB1gld+lEHvhAirIynVJrTw3VxmagwdwwJ1WqeN1NkauePNLPIPVPPczcMY3iPG6khKtRktfDcX6O/HRf0S+NfWQ9Tb7FbH8SoNjXZmv53D17sq+MN1gxjfN8HqSEq1KS18DzBpQGdqam2s3q0nYblKo91w37xcPss/xONX9uf64UlWR1KqzWnhe4AxPeMID/JneZ5O67iC3W74+YKNLN10gAcn9eXW0clWR1KqXWjhe4CQQH/G90vg07xDNOrF1M6JMYZfLt7CwuwS7ruoN3ecn2Z1JKXajRa+h5jYvzMVx+pZX1hpdRSPZYzh8Q/zeWddET++II27J+gdq5Rv0cL3EBf0iSc4wE9X67SSMYYnlm3ltdWFTBuTzC8u6aN3rFI+RwvfQ4QHBzCudzyfbDmo18g/SyeP7F/8qoCpo3rwyOXpWvbKJ2nhe5CJ/TtzsLqWTSVVVkfxGHa74aFFW3htdSG3j03h8Sv7a9krn6WF70Eu6pdAgJ/w8ZYDVkfxCI12w88XbOKddUXMujCNX17WT8te+TQtfA8SFRbIqLRYlm85iDE6rXM6tkY7983L5f3sYu67qDc/+77O2Sulhe9hJg3oQmHFcfIP6K0Pv0ttQyOz3s5mycb93D+xL/dc1EvLXim08D3OxAGdCfL3Y/76fVZHcUtVJxqY+vI6Ps0/xGNXpPPjC3SdvVInaeF7mJjwIC4d2JmFOSUcr7dZHcetHKg6wQ0vfEPOvsP8ffJQfjQmxepISrkVLXwPdPPIHtTU2li6Ud+8PWnnoRque241JUdO8Pq0EVwxuKvVkZRyO1r4HiijRzS9OnVg7tq9VkdxC1mFlVz/wjfUNxrenTGS0T3jrI6klFtyqvBFZKKIbBeRXSLyQAvPR4nIhyKyUUTyRGRas+c6isgCEdkmIltFZJQrB+CLRISbM7uzsbiKzcW+vSb/g9wSbnppLTHhQSy6czQDEqOsjqSU2zpj4YuIP/AsMAlIB6aISPopu80C8o0xg4ELgL+IyMkbgj4NfGKM6QsMBra6KLtPu2ZYEiGBfry9zjeP8u12wx8+2cY97+YypFtHFswcRbeYMKtjKeXWnDnCHwHsMsbsMcbUA+8CV52yjwEipGntWwegErCJSCQwDngZwBhTb4w54qrwviwqNJArB3flg9z9VNc2WB2nXR2tszHjzSyeX7mbKSO689b0TGI7BFsdSym350zhJwLN1wAWO7Y19wzQD9gPbAbuMcbYgVSgDHhVRHJE5CURCW/pi4jIDBHJEpGssjK9f6szbs7swfH6Rj7IKbE6SrspqjjOtc99zRfby3j8yv48cc0AggL0rSilnOHMv5SWzlg59TTPS4BcoCswBHjGcXQfAAwDnjfGDAWOAd96DwDAGDPHGJNhjMmIj493Lr2PG5QUxYDESOauLfKJM2//vaOMq55dxaHqOt64bQS3jk7WE6qUOgvOFH4x0K3Z4ySajuSbmwYsNE12AQVAX8dri40xax37LaDpPwDlAk1v3vZg28EasouOWB2nzTQ02vnDJ9u49ZV1dIoI4YNZYxijK3GUOmvOFP56oJeIpDjeiJ0MLDllnyJgAoCIJAB9gD3GmIPAPhHp49hvApDvkuQKgCsHd6VDcIDXLtEsOXKCyXPW8PzK3dyU2Z0PZo8hOa7FWUGl1BkEnGkHY4xNRGYDywF/4BVjTJ6IzHQ8/wLwG+A1EdlM0xTQ/caYk3fcvguY6/jPYg9NPw0oFwkPDuDqoV2Zn1XMI5en0zEs6Mwv8hCf5R/iZ+9tpNFu+MeUoXoylVLnSNxx7jcjI8NkZWVZHcNj5O+v5tK/f8X9E/t6xbVjjtbZePLjrby1pogBiZE8M2WYHtUrdQYissEYk3G6fc54hK/cX3rXSC7oE89zX+zi+uFJxEd47hLFL3eU8eDCzeyvOsHtY1P4+cQ+BAf4Wx1LKa/gMYXf0NBAcXExtbW1VkdpFyEhISQlJREYGOjU/g9fns4lf/2SPy/fzh+uH9TG6Vyv6kQDT3y0lXlZ+0iLD2fBzNEM7xFtdSylvIrHFH5xcTEREREkJ3v/UjxjDBUVFRQXF5OS4twVH9PiOzBtTDIvrSrgpszuDO7WsW1Duogxhs/yD/HIB3mU1tQy8/w07r2oFyGBelSvlKt5zBkrtbW1xMbGen3ZQ9Nyy9jY2LP+aebuCb2IDQ/msQ/zPOJG59sOVvPDl9cx480NRIYGsOjOMTwwqa+WvVJtxGMKH/CJsj+pNWONCAnk/ol9yCk6wuJc9z37tuJoHb9avJlLn/6KzSVVPHpFOh/d/T2P+alEKU/lMVM6yjnXDUvirbVF/P7jbXy/f2c6BLvPX/GJ+kbeXFPIP1bs4nh9Iz8c2YN7L+pNdLj3LCVVyp25Txsol/DzEx67Ip1rnlvNMyt28cCkvlZHorq2gTe/2cvLqwqoPFbPuN7xPHxZP3olRFgdTSmfooXvhYZ2j+a6YUm8vGoPN57XjRSL1rBXHqvn1a8LeG11ITW1Ni7oE8+sC3tyXnKMJXmU8nUeWfiPf5hH/v5ql/6e6V0jefSK/t/5fGFhIRMnTmTs2LGsWbOGwYMHM23aNB599FFKS0uZO3cuPXv25LbbbmPPnj2EhYUxZ84cBg0axGOPPUZBQQEHDhxgx44dPPXUU6xZs4aPP/6YxMREPvzwQ6eXXzrr/ol9WJ53kJ/Oz+XVaSOICnXt7/9djDFs2HuYeev3sXTTAWptjUzs35lZF/bUm5MoZTGPLHyr7Nq1i/fee485c+Zw3nnn8fbbb7Nq1SqWLFnCE088Qbdu3Rg6dCiLFy9mxYoVTJ06ldzcXAB2797NF198QX5+PqNGjeL999/nj3/8I9dccw0fffQRV199tUuzdooM4cnrBnLfvFx+8MJqXp02gsSOoS79Gs2VH61jYXYx89bvY3fZMcKD/LlqSFemj03RqRul3IRHFv7pjsTbUkpKCgMHDgSgf//+TJgwARFh4MCBFBYWsnfvXt5//30Axo8fT0VFBVVVTbcgnDRpEoGBgQwcOJDGxkYmTpwI8J/XtoXLB3UlJiyIO97awDXPfs0rPzrPpUfZheXHWLGtlC+2l/LN7gpsdsPwHtH88bo0LhvUhXA3esNYKeWhhW+V4OD/XrLAz8/vP4/9/Pyw2WwEBHz7j/Pk8srm+wYGBv5n+8nXtpXRPeNYMHM0015dx43//IZnbx7GBX06ter3Kq2uZXNJFV/vqmDl9lL2lB8DIC0+nOnfS+EHw5Po2UmP5pVyV1r4LjRu3Djmzp3Lww8/zMqVK4mLiyMyMtLqWPTpHMGiWWOY9up6pr+exS8u6cOwHtF0igimU0QIoUH/PdGptqGR0uo6SmtqOVRdx/aD1WwuqWLL/mrKauoACArwY2RqLFNH9WB83wS6x+q9ZJXyBFr4LvTYY48xbdo0Bg0aRFhYGK+//rrVkf4jITKE+TNHMWtuNr//eNv/PBcREkB0WBCHj9dTU/u/P234+wm9OnVgXK94BiRGMiAxiv5dIwkL0m8dpTyNx1weeevWrfTr18+iRNZoizHb7YYdpTUcqq6jtLqW0po6ymrqqDxWT3RYIJ0iQ5qO/B2/psSF66UOlPIAenlk9S1+fkLfzpH07Wx1EqVUe/Ooa+kopZRqPY8qfHecfmorvjRWpVT78JjCDwkJoaKiwieK8OT18ENCQqyOopTyIh4zh5+UlERxcTFlZWVWR2kXJ+94pZRSruIxhR8YGOj03Z+UUkp9m8dM6SillDo3WvhKKeUjtPCVUspHuOWZtiJSBuxt5cvjgHIXxrGat40HvG9M3jYe8L4xedt44Ntj6mGMiT/dC9yy8M+FiGSd6fRiT+Jt4wHvG5O3jQe8b0zeNh5o3Zh0SkcppXyEFr5SSvkIbyz8OVYHcDFvGw9435i8bTzgfWPytvFAK8bkdXP4SimlWuaNR/hKKaVaoIWvlFI+wmsKX0Qmish2EdklIg9Ynac1ROQVESkVkS3NtsWIyGcistPxa7SVGc+GiHQTkS9EZKuI5InIPY7tnjymEBFZJyIbHWN63LHdY8cEICL+IpIjIksdjz19PIUisllEckUky7HNY8ckIh1FZIGIbHP8exrVmvF4ReGLiD/wLDAJSAemiEi6tala5TVg4inbHgA+N8b0Aj53PPYUNuCnxph+wEhgluPvxZPHVAeMN8YMBoYAE0VkJJ49JoB7gK3NHnv6eAAuNMYMabZW3ZPH9DTwiTGmLzCYpr+rsx+PMcbjP4BRwPJmjx8EHrQ6VyvHkgxsafZ4O9DF8XkXYLvVGc9hbB8AF3vLmIAwIBvI9OQxAUmOwhgPLHVs89jxODIXAnGnbPPIMQGRQAGORTbnMh6vOMIHEoF9zR4XO7Z5gwRjzAEAx6+dLM7TKiKSDAwF1uLhY3JMf+QCpcBnxhhPH9PfgF8A9mbbPHk8AAb4VEQ2iMgMxzZPHVMqUAa86ph2e0lEwmnFeLyl8KWFbbre1E2ISAfgfeBeY0y11XnOlTGm0RgzhKYj4xEiMsDiSK0mIpcDpcaYDVZncbExxphhNE3zzhKRcVYHOgcBwDDgeWPMUOAYrZyO8pbCLwa6NXucBOy3KIurHRKRLgCOX0stznNWRCSQprKfa4xZ6Njs0WM6yRhzBFhJ0/sunjqmMcCVIlIIvAuMF5G38NzxAGCM2e/4tRRYBIzAc8dUDBQ7fpIEWEDTfwBnPR5vKfz1QC8RSRGRIGAysMTiTK6yBLjV8fmtNM2DewQREeBlYKsx5qlmT3nymOJFpKPj81DgImAbHjomY8yDxpgkY0wyTf9uVhhjbsFDxwMgIuEiEnHyc+D7wBY8dEzGmIPAPhHp49g0AcinNeOx+g0JF76xcSmwA9gN/NLqPK0cwzvAAaCBpv/VpwOxNL2httPxa4zVOc9iPGNpmlrbBOQ6Pi718DENAnIcY9oCPOLY7rFjaja2C/jvm7YeOx6a5rw3Oj7yTvaBh49pCJDl+L5bDES3Zjx6aQWllPIR3jKlo5RS6gy08JVSykdo4SullI/QwldKKR+hha+UUj5CC18ppXyEFr5SSvmI/weWOst5qWBPoQAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rec.plot()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "e09326a0", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.0007999999999999986, 0.01999348103498009, 2e-07)" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rec.recs['lr'][0], rec.recs['lr'][15], rec.recs['lr'][-1]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "b87257e7", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.95, 0.850032595151051, 0.95)" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rec.recs['mom'][0], rec.recs['mom'][15], rec.recs['mom'][-1]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "65c813af", | |
"metadata": {}, | |
"source": [ | |
"### `FlatCos`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "1e8d2ef7", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"sched_cb = partial( FlatCosSched, total_steps=tmax, pct_start=0.35 )" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "47d428b0", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"rec = RecorderCB(lr=_lr)\n", | |
"rec.order = -1" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "6d1ffe5e", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"xtra = [BatchSchedCB(sched_cb), rec]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "3ab3bfba", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"\n", | |
"<style>\n", | |
" /* Turns off some styling */\n", | |
" progress {\n", | |
" /* gets rid of default border in Firefox and Opera. */\n", | |
" border: none;\n", | |
" /* Needs to be in here for Safari polyfill so background images work as expected. */\n", | |
" background-size: auto;\n", | |
" }\n", | |
" .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n", | |
" background: #F44336;\n", | |
" }\n", | |
"</style>\n" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"text/html": [ | |
"<table border=\"1\" class=\"dataframe\">\n", | |
" <thead>\n", | |
" <tr style=\"text-align: left;\">\n", | |
" <th>accuracy</th>\n", | |
" <th>loss</th>\n", | |
" <th>epoch</th>\n", | |
" <th>train</th>\n", | |
" </tr>\n", | |
" </thead>\n", | |
" <tbody>\n", | |
" <tr>\n", | |
" <td>0.801</td>\n", | |
" <td>0.542</td>\n", | |
" <td>0</td>\n", | |
" <td>train</td>\n", | |
" </tr>\n", | |
" <tr>\n", | |
" <td>0.854</td>\n", | |
" <td>0.400</td>\n", | |
" <td>0</td>\n", | |
" <td>eval</td>\n", | |
" </tr>\n", | |
" </tbody>\n", | |
"</table>" | |
], | |
"text/plain": [ | |
"<IPython.core.display.HTML object>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
}, | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"model = get_model(act_gr, norm=nn.BatchNorm2d).apply(iw)\n", | |
"\n", | |
"cbs = [DeviceCB(), metrics, ProgressCB(plot=True)]\n", | |
"learn = TrainLearner(model, dls, F.cross_entropy, lr=2e-2, cbs=cbs+xtra, opt_func=optim.AdamW)\n", | |
"learn.fit(epochs)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "1203b8e3", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"rec.plot()" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "354df4c6", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.02, 0.02, 0.019982991928274872, 2e-07)" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rec.recs['lr'][0], rec.recs['lr'][20], rec.recs['lr'][21], rec.recs['lr'][-1]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "92a84e10", | |
"metadata": {}, | |
"source": [ | |
"## Comparing miniai's OneCycle implementation with PyTorch's" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "71129e96", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"lr=0.02\n", | |
"epochs = 1\n", | |
"batches = 101" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "9ba2f710", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# miniai OneCycleSched is based on fastai's implementation\n", | |
"opt = torch.optim.AdamW(model.parameters())\n", | |
"miniai_sc = partial(OneCycleSched, \n", | |
" total_steps=epochs*batches, lr_max=lr)(opt)\n", | |
"\n", | |
"mini_lrs=[]\n", | |
"for i in range(batches):\n", | |
" mini_lrs.append(miniai_sc.scheds['lr'](i/100)[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "99cbfe85", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"opt = torch.optim.AdamW(model.parameters())\n", | |
"pytorch_sc = partial(lr_scheduler.OneCycleLR, \n", | |
" max_lr=lr, total_steps=epochs*batches)(opt)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "04100649", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"101" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"pt_lrs=[]\n", | |
"for batch in range(batches):\n", | |
" pt_lrs.append(pytorch_sc.get_last_lr()[0])\n", | |
" pytorch_sc.step()\n", | |
"len(pt_lrs)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "1a655a8b", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"for yi in (mini_lrs, pt_lrs):\n", | |
" plt.plot(range(batches), yi);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "76aef941", | |
"metadata": {}, | |
"source": [ | |
"They differ because:\n", | |
"- **miniai**, as **fastai**, goes from `lr_max/div` to `lr_max` to `lr_max/div_final`, where `div=25` and `div_final=1e5`. Also, the default `pct_start` is 25%.\n", | |
"- **PyTorch** goes from `lr_max/div` to `lr_max` to `lr_max/(div*div_final)`, where `div=25` and `div_final=1e4`. The default `pct_start` is 30%.\n", | |
"\n", | |
"So we need to tweek the values." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "9be9472d", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"# miniai mimicking PyTorch: pct_start=0.3, div_final=25*1e4\n", | |
"\n", | |
"opt = torch.optim.AdamW(model.parameters())\n", | |
"miniai_sc = partial(OneCycleSched, total_steps=epochs*batches, \n", | |
" lr_max=lr, pct_start=0.3, div_final=25*1e4)(opt)\n", | |
"\n", | |
"mini_lrs=[]\n", | |
"for i in range(batches):\n", | |
" mini_lrs.append(miniai_sc.scheds['lr'](i/100)[0])" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "f816c8df", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<Figure size 432x288 with 1 Axes>" | |
] | |
}, | |
"metadata": { | |
"needs_background": "light" | |
}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"for yi in (mini_lrs, pt_lrs):\n", | |
" plt.plot(range(batches), yi);" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "3adb8656", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"(0.02, 0.01999516284226859)" | |
] | |
}, | |
"execution_count": null, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"mini_lrs[30], pt_lrs[30]" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "99b58e53", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"test_close(pt_lrs, mini_lrs, eps=1e-03)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"id": "d6b45316", | |
"metadata": {}, | |
"source": [ | |
"## Export -" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"id": "18ef9e48", | |
"metadata": {}, | |
"outputs": [], | |
"source": [ | |
"import nbdev; nbdev.nbdev_export()" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3 (ipykernel)", | |
"language": "python", | |
"name": "python3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 5 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment