|
{ |
|
"cells": [ |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 1, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"%matplotlib inline\n", |
|
"%reload_ext autoreload\n", |
|
"%autoreload 2" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 2, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"import os\n", |
|
"# os.environ['CUDA_LAUNCH_BLOCKING'] = '1' # For debugging on cuda device\n", |
|
"import sys\n", |
|
"import numpy as np\n", |
|
"import matplotlib.pyplot as plt\n", |
|
"plt.style.use('seaborn-notebook')\n", |
|
"import torch\n", |
|
"\n", |
|
"from lulc.model.lulc_segmenter import LulcSegmenter\n", |
|
"from lulc.training.get_dataloaders import get_dataloaders\n", |
|
"from lulc.training.get_loss import get_loss_breakdown\n", |
|
"from lulc.training.find_lr import find_lr\n", |
|
"from lulc.training.get_optimizer import get_optimizer\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "markdown", |
|
"metadata": {}, |
|
"source": [ |
|
"### Model" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 3, |
|
"metadata": {}, |
|
"outputs": [ |
|
{ |
|
"data": { |
|
"text/plain": [ |
|
"device(type='cuda')" |
|
] |
|
}, |
|
"execution_count": 3, |
|
"metadata": {}, |
|
"output_type": "execute_result" |
|
} |
|
], |
|
"source": [ |
|
"# device = torch.device('cpu')\n", |
|
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", |
|
"device" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 4, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"# model = LulcSegmenter()\n", |
|
"# model.to(device)\n", |
|
"# model.classes\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "markdown", |
|
"metadata": {}, |
|
"source": [ |
|
"### Dataloaders" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 5, |
|
"metadata": {}, |
|
"outputs": [ |
|
{ |
|
"data": { |
|
"text/plain": [ |
|
"{'dataset': <lulc.data.TransformedDataset.TransformedDataset at 0x7fd76c1873c8>,\n", |
|
" 'batch_size': 80,\n", |
|
" 'num_workers': 16,\n", |
|
" 'collate_fn': <function torch.utils.data._utils.collate.default_collate(batch)>,\n", |
|
" 'pin_memory': True,\n", |
|
" 'drop_last': True,\n", |
|
" 'timeout': 0,\n", |
|
" 'worker_init_fn': None,\n", |
|
" 'sampler': <torch.utils.data.sampler.RandomSampler at 0x7fd76c187518>,\n", |
|
" 'batch_sampler': <torch.utils.data.sampler.BatchSampler at 0x7fd76c187630>,\n", |
|
" '_DataLoader__initialized': True}" |
|
] |
|
}, |
|
"execution_count": 5, |
|
"metadata": {}, |
|
"output_type": "execute_result" |
|
} |
|
], |
|
"source": [ |
|
"dataloaders = get_dataloaders()\n", |
|
"dataloaders['train'].__dict__\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "markdown", |
|
"metadata": {}, |
|
"source": [ |
|
"### Training Losses" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 6, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"loss = lambda preds, labels: sum(get_loss_breakdown(preds, labels).values())\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "markdown", |
|
"metadata": {}, |
|
"source": [ |
|
"### Learning Rate" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 7, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [ |
|
"histories = {}\n", |
|
"model_init_state = {}\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 8, |
|
"metadata": { |
|
"scrolled": true |
|
}, |
|
"outputs": [ |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.85, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
" 0%| | 0/646 [00:00<?, ?batch/s]/home/ubuntu/.local/share/virtualenvs/lulc-dvc-uwD7aQad/lib/python3.7/site-packages/torch/nn/parallel/_functions.py:61: UserWarning: Was asked to gather along dimension 0, but all input tensors were scalars; will instead unsqueeze and return a vector.\n", |
|
" warnings.warn('Was asked to gather along dimension 0, but all '\n", |
|
"lr=2.257E-02 loss=11.436: 13%|█▎ | 84/646 [02:59<18:54, 2.02s/batch] " |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Loss is exploding (9.42863397337394 > 4 * 2.238644625101701).\n", |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.85, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
"\n", |
|
" 0%| | 0/646 [00:00<?, ?batch/s]\u001b[A\n", |
|
" 0%| | 1/646 [00:20<3:41:26, 20.60s/batch]\u001b[A\n", |
|
"lr=1.000E-05 loss=2.695: 0%| | 1/646 [00:20<3:41:26, 20.60s/batch]\u001b[A\n", |
|
"...\n", |
|
"lr=1.417E-02 loss=88.241: 12%|█▏ | 79/646 [02:09<12:19, 1.30s/batch]\u001b[A" |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Loss is exploding (20.804162443436844 > 4 * 2.282114017166211).\n", |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.85, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
"\n", |
|
"lr=1.000E-05 loss=2.692: 0%| | 1/646 [00:25<4:33:26, 25.44s/batch]\u001b[A\u001b[A\n", |
|
"...\n", |
|
"lr=2.257E-02 loss=32.781: 13%|█▎ | 84/646 [02:13<12:11, 1.30s/batch]\u001b[A\u001b[A" |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Loss is exploding (13.517369699755688 > 4 * 2.314151248348674).\n", |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.95, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
"\n", |
|
" 0%| | 0/646 [00:00<?, ?batch/s]\u001b[A\u001b[A\u001b[A\n", |
|
" 0%| | 1/646 [00:20<3:44:46, 20.91s/batch]\u001b[A\u001b[A\u001b[A\n", |
|
"lr=1.000E-05 loss=2.698: 0%| | 1/646 [00:20<3:44:46, 20.91s/batch]\u001b[A\u001b[A\u001b[A\n", |
|
"...\n", |
|
"lr=1.000E-01 loss=2.521: 15%|█▌ | 100/646 [02:30<11:54, 1.31s/batch]\u001b[A\u001b[A\u001b[A" |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Reached end of dataloader or max batches.\n", |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.95, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
"\n", |
|
" 0%| | 0/646 [00:00<?, ?batch/s]\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
" 0%| | 1/646 [00:16<2:58:51, 16.64s/batch]\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
"lr=1.000E-05 loss=2.695: 0%| | 1/646 [00:16<2:58:51, 16.64s/batch]\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
"...\n", |
|
"lr=1.000E-01 loss=2.637: 15%|█▌ | 100/646 [02:25<11:50, 1.30s/batch]\u001b[A\u001b[A\u001b[A\u001b[A" |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Reached end of dataloader or max batches.\n", |
|
"Running optim config {'weight_decay': 0.1, 'betas': [0.95, 0.99]}\n" |
|
] |
|
}, |
|
{ |
|
"name": "stderr", |
|
"output_type": "stream", |
|
"text": [ |
|
"\n", |
|
" 0%| | 0/646 [00:00<?, ?batch/s]\u001b[A\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
" 0%| | 1/646 [00:15<2:41:29, 15.02s/batch]\u001b[A\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
"lr=1.000E-05 loss=2.694: 0%| | 1/646 [00:15<2:41:29, 15.02s/batch]\u001b[A\u001b[A\u001b[A\u001b[A\u001b[A\n", |
|
"...\n", |
|
"lr=1.000E-01 loss=2.643: 15%|█▌ | 100/646 [02:24<11:51, 1.30s/batch]\u001b[A\u001b[A\u001b[A\u001b[A\u001b[A" |
|
] |
|
}, |
|
{ |
|
"name": "stdout", |
|
"output_type": "stream", |
|
"text": [ |
|
"Terminating: Reached end of dataloader or max batches.\n", |
|
"dict_keys([0.85, 0.95])\n" |
|
] |
|
} |
|
], |
|
"source": [ |
|
"for beta1 in [0.85, 0.95]:\n", |
|
" if not beta1 in histories:\n", |
|
" histories[beta1] = {}\n", |
|
" for wd in [0.1]:\n", |
|
" if not wd in histories[beta1]:\n", |
|
" histories[beta1][wd] = []\n", |
|
" for _ in range(3):\n", |
|
" model = LulcSegmenter()\n", |
|
" if len(list(model_init_state.keys())) == 0:\n", |
|
" model_init_state.update({k: v.detach().clone() for k, v in model.state_dict().items()})\n", |
|
" else:\n", |
|
" model.load_state_dict({k: v.clone() for k, v in model_init_state.items()})\n", |
|
" model.to(device)\n", |
|
" \n", |
|
" optim_kwargs = {\n", |
|
" 'weight_decay': wd,\n", |
|
" 'betas': [beta1, 0.99],\n", |
|
" }\n", |
|
" print(f'Running optim config {optim_kwargs}')\n", |
|
" sys.stdout.flush()\n", |
|
" opt = get_optimizer(model, **optim_kwargs)\n", |
|
"\n", |
|
" if device.type == 'cuda' and torch.cuda.device_count() > 1:\n", |
|
" from lulc.training.train_model import CriterionParallel\n", |
|
" if not isinstance(model, torch.nn.DataParallel):\n", |
|
" model = torch.nn.DataParallel(model)\n", |
|
" if not isinstance(loss, CriterionParallel):\n", |
|
" loss = CriterionParallel(loss)\n", |
|
"\n", |
|
" lr_history = find_lr(model, dataloaders['train'], opt, loss, device=device, start_lr=1e-5, end_lr=1e-1, steps=100, beta=0.8)\n", |
|
" histories[beta1][wd].append(lr_history)\n", |
|
"\n", |
|
" model.to(torch.device('cpu'))\n", |
|
" del model\n", |
|
" del opt\n", |
|
"print(histories.keys())\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": 9, |
|
"metadata": { |
|
"scrolled": false |
|
}, |
|
"outputs": [ |
|
{ |
|
"data": { |
|
"text/plain": [ |
|
"<matplotlib.legend.Legend at 0x7fd7e22c7400>" |
|
] |
|
}, |
|
"execution_count": 9, |
|
"metadata": {}, |
|
"output_type": "execute_result" |
|
}, |
|
{ |
|
"data": { |
|
"image/png": "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/SqJiYk8+OCDrF69muTkZH7wgx/wyCOPcM899/DFL36R119/vaEcIRwbNmygsLCQ4cOHs2jRIlauXMm8efNavcayZct45JFHeOONN+jXrx8A3//+9+nTpw+BQIAFCxawbds28vLy2rzeG2+8wV133XXW40lJSaxfv54jR44wdOjQhseHDBnCu+++e9bx3/nOd7j88sv56U9/SmVlJatXr2742L59+5gyZQppaWk8+OCDzJkzp8319O/fH5/PR1lZGWvXrmX69OmsXbuW2bNn079/f5KSkrjzzjv58pe/zM0338zPfvazhs8tLy9v89zPPPMM/fv3JyMjo2Gz7pAhQzhy5EibaxER6a4UXovjJSI9RMwH2F1h8uTJ3H333dx7771cccUVzYKpK6+8suGYiooKUlNTSU1Nxev1UlJSwltvvcWSJUtwu90MGDCAiy++mPfee6/Nx9PS0s66/oIFC0hPTwdgwoQJHDhwgJKSEgoLC7nooosAu0fyrFmz+Oijjxg5ciRjxowB4MYbb+TJJ58879c4c+ZMRo0aBcCSJUt46623SEhIaPUarXn++ed58skn8fv9HD16lMLCwnMG2PPnz2fLli3nXdf5PPvss9x6663cfffdvP3229x000188MEHDBo0iIMHD9K3b1/ef/99PvOZz/Dhhx+2+v0N+cQnPsG6detYs2YN3/zmN1m1ahWWZTX8e69bt44//elPANx0003ce++9AKSmpp7za4m09lxEpLtqTw9sBeUxpBd3sYr5APtcmeZoGTt2LJs2beKll17igQceYMGCBSxbZg+w9Hq9gD1lL/R26H2/3+/I9Zue1+124/f7sSyLyy67jGeffbbZse0NWltuPjHGtHmNlvbt28fy5ct57733yMzM5NZbb8XnO/erDOfLYA8ePJhDhw41PH748GEGDx581vFPPfUUq1atAmDWrFn4fD5OnTpF//79G75v06ZNY/To0ezcuZPp06e3uaa5c+eydu1aDhw4wFVXXcUPfvADjDEsXry42felpfNlsMePH09JSUlD/+q2vhYRke6uXQF2/edoj2MM6KXZa1ANdlQUFRWRlJTEjTfeyNKlS9m0aVPYnztnzhyee+45AoEAJ0+eZM2aNcycObPNx1NTU8Oa1nfhhReybt06du/eDdh14jt37mTcuHHs37+fPXv2ADQLjjds2MDN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s1m2bBl///vfeeqppxo+f86cOZSXl5913uXLl3PppZdy/PhxBg0aBMDAgQM5fvx4m2sREemu2tsHOz0xLgqrkU5n9d4a7NgPsLvA5MmTufvuu7n33nu54oormDNnTsPHQrW9kydPpqKigtTUVFJTU/F6vZSUlPDWW2+xZMkS3G43AwYM4OKLL+a9995r8/G0tLSzrr9gwQLS09MBmDBhAgcOHKCkpITCwkIuuugiwB6hPWvWLD766CNGjhzJmDFjALjxxht58sknz/s1zpw5k1GjRgGwZMkS3nrrLRISElq9Rmuef/55nnzySfx+P0ePHqWwsPCcAfb8+fPZsmXLedd1PsuXL+eOO+5gxYoVzJ07l8GDB+N225mSAwcOMHjwYPbu3csll1zC5MmTGT16dJvnmjNnDmvWrGHfvn3cf//9/PKXv+Tiiy9mxowZAKxZs6bhFYHFixeTmdk43nft2rVhr9kYo5dKRaRHalcXEX+QAcpgxwZlsGPYOTLN0TJ27Fg2bdrESy+9xAMPPMCCBQtYtmwZAF6vFwCXy9Xwduh9v9/vyPWbntftduP3+7Esi8suu4xnn3222bHtDVpbBnzGmDav0dK+fftYvnw57733HpmZmdx66634fL5zfs75MtiDBw/m0KFDDY8fPnyYwYMHn3V8dnZ2Q9BbUVHBn/70JzIyMgAajh81ahTz5s1j8+bN5wyw586dy89//nOKior43ve+x8MPP8ybb77Z7A+qtpwvgz1gwACOHj3KoEGDOHr0KP379z/vOUVEuptIa7DrAkECQUtTHGOF+mCLk4qKikhKSuLGG29k6dKlbNq0KezPnTNnDs899xyBQICTJ0+yZs0aZs6c2ebjqamprQZqLV144YWsW7eO3bt3A3ad+M6dOxk3bhz79+9nz549AM2C4w0bNnDzzTe3er4NGzawb98+gsEgzz33HLNnz27zGkCzdZaVlZGcnEx6ejrHjx/n5ZdfPu/6Qxnslrf169cDMGPGDHbt2sW+ffuora3l97//faudQE6dOtVQL/4///M//Nu//RsAZ86coaampuGYdevWMWHCBADuv/9+/vznP591rpkzZ7J+/XpcLhcJCQkUFBTwi1/8grlz5wJ2AB7agPryyy836wSydu3aVr+eSy+9FLBf6Xj66acBePrpp7nqqqvO+z0SEeluIo2vatSiL7b0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\n", |
|
"text/plain": [ |
|
"<Figure size 864x576 with 1 Axes>" |
|
] |
|
}, |
|
"metadata": { |
|
"needs_background": "light" |
|
}, |
|
"output_type": "display_data" |
|
} |
|
], |
|
"source": [ |
|
"plt.figure(figsize=(12,8))\n", |
|
"for beta1, wds in list(histories.items()):\n", |
|
" for wd, runs in list(wds.items()):\n", |
|
" if len(runs) == 1:\n", |
|
" df_history = runs[0]\n", |
|
" ax = plt.plot('lr', 'loss_smoothed', data=df_history, label=f'smoothed, beta1={beta1}, wd={wd}')\n", |
|
" plt.plot('lr', 'loss', data=df_history, label=f'batch loss, beta1={beta1}, wd={wd}', color=ax[-1].get_color(), alpha=0.3)\n", |
|
" else:\n", |
|
" maxlen = min([len(df['loss_smoothed']) for df in runs])\n", |
|
" grouped_smooth = np.vstack([df['loss_smoothed'][:maxlen] for df in runs])\n", |
|
" # grouped_batch = np.vstack([df['loss'] for df in runs])\n", |
|
" lrs = runs[0]['lr']\n", |
|
" ax = plt.plot(lrs[:maxlen], grouped_smooth.mean(axis=0), label=f\"smoothed, beta1={beta1}, wd={wd}\")\n", |
|
" # plt.plot(lrs, grouped_batch.mean(axis=0), label=f'batch loss, beta1={beta1}, wd={wd}', color=ax[-1].get_color(), alpha=0.3)\n", |
|
" plt.fill_between(\n", |
|
" lrs[:maxlen], \n", |
|
" grouped_smooth.min(axis=0), \n", |
|
" grouped_smooth.max(axis=0),\n", |
|
" facecolor=ax[-1].get_color(), \n", |
|
" alpha=0.3\n", |
|
" )\n", |
|
"plt.xscale('log'); plt.xlabel('lr'); plt.ylabel('loss'); plt.ylim(2,3)\n", |
|
"plt.legend(loc='best')\n" |
|
] |
|
}, |
|
{ |
|
"cell_type": "code", |
|
"execution_count": null, |
|
"metadata": {}, |
|
"outputs": [], |
|
"source": [] |
|
} |
|
], |
|
"metadata": { |
|
"kernelspec": { |
|
"display_name": "lulc-dvc", |
|
"language": "python", |
|
"name": "lulc-dvc" |
|
}, |
|
"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.3" |
|
} |
|
}, |
|
"nbformat": 4, |
|
"nbformat_minor": 2 |
|
} |