├── A Disciplined Approach To Neural Network Hyper-Parameters.ipynb ├── README.md └── images ├── BS_LR.png ├── HighBSHighLR.png ├── HighBSLowLR.png ├── LowBSHighLR.png ├── LowBSLowLR.png ├── Under_over.png ├── loss.png ├── one_cycle.png └── test /A Disciplined Approach To Neural Network Hyper-Parameters.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "### A DISCIPLINED APPROACH TO NEURAL NETWORK HYPER-PARAMETERS: PART 1 – LEARNING RATE, BATCH SIZE, MOMENTUM, AND WEIGHT DECAY" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "- Reviewing the approach for setting Hyperparameters by Leslie Smith. \n", 15 | "- 'Setting the hyper-parameters remains a black art that requires years of experience to acquire' - Leslie Smith" 16 | ] 17 | }, 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "heading_collapsed": true 22 | }, 23 | "source": [ 24 | "### Load Dependancies" 25 | ] 26 | }, 27 | { 28 | "cell_type": "code", 29 | "execution_count": 1, 30 | "metadata": { 31 | "hidden": true 32 | }, 33 | "outputs": [], 34 | "source": [ 35 | "# Uncomment the below if you need to reset your precomputed activations\n", 36 | "!rm -rf {PATH}tmp" 37 | ] 38 | }, 39 | { 40 | "cell_type": "code", 41 | "execution_count": 2, 42 | "metadata": { 43 | "hidden": true 44 | }, 45 | "outputs": [], 46 | "source": [ 47 | "%reload_ext autoreload\n", 48 | "%autoreload 2\n", 49 | "%matplotlib inline" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": 3, 55 | "metadata": { 56 | "hidden": true 57 | }, 58 | "outputs": [], 59 | "source": [ 60 | "#Import the fastai libraries\n", 61 | "from fastai.imports import *\n", 62 | "from fastai.transforms import *\n", 63 | "from fastai.conv_learner import *\n", 64 | "from fastai.model import *\n", 65 | "from fastai.dataset import *\n", 66 | "from fastai.sgdr import *\n", 67 | "from fastai.plots import *" 68 | ] 69 | }, 70 | { 71 | "cell_type": "code", 72 | "execution_count": 4, 73 | "metadata": { 74 | "hidden": true 75 | }, 76 | "outputs": [], 77 | "source": [ 78 | "# specify the path of the folder we will be working with\n", 79 | "PATH = 'data/pill/small/'" 80 | ] 81 | }, 82 | { 83 | "cell_type": "code", 84 | "execution_count": 5, 85 | "metadata": { 86 | "hidden": true 87 | }, 88 | "outputs": [], 89 | "source": [ 90 | "# Specify the csv file that contains the labels for the corresponding images in the training folder\n", 91 | "labels_csv = f'{PATH}/classify_test_double.csv'\n", 92 | "#labels_csv = f'{PATH}/labels.csv'\n", 93 | "n = len(list(open(labels_csv))) -1\n", 94 | "val_idxs = get_cv_idxs(n) #Create a validation set = in this case 20% set for validation\n", 95 | "#val_idxs = []#use this for not creating a validation set" 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 6, 101 | "metadata": { 102 | "hidden": true 103 | }, 104 | "outputs": [ 105 | { 106 | "data": { 107 | "text/plain": [ 108 | "206" 109 | ] 110 | }, 111 | "execution_count": 6, 112 | "metadata": {}, 113 | "output_type": "execute_result" 114 | } 115 | ], 116 | "source": [ 117 | "len(val_idxs) #number in validation set" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 7, 123 | "metadata": { 124 | "hidden": true 125 | }, 126 | "outputs": [], 127 | "source": [ 128 | "f_model = resnet50 #choose the pretrained model\n", 129 | "sz=185\n", 130 | "bs=8" 131 | ] 132 | }, 133 | { 134 | "cell_type": "code", 135 | "execution_count": 8, 136 | "metadata": { 137 | "hidden": true 138 | }, 139 | "outputs": [], 140 | "source": [ 141 | "#aug_tfms = [RandomLighting(0.25,0.150)] + [RandomDihedral()]\n", 142 | "#aug_tfms = [RandomDihedral()] + [RandomRotate(27)]\n", 143 | "#aug_tfms = [Cutout(n_holes=200, length=7.5, tfm_y=TfmType.NO)]\n", 144 | "aug_tfms = [RandomRotateZoom(deg=45, zoom=2, stretch=1)] + [AddPadding(pad=50, mode=cv2.BORDER_WRAP)] + [RandomDihedral()]\n", 145 | "#aug_tfms = RandomRotate(57)\n", 146 | "#aug_tfms = RandomFlip()\n", 147 | "#aug_tfms = RandomDihedral()\n", 148 | "#aug_tfms =[RandomRotate(27)]\n", 149 | "#aug_tfms = [AddPadding(pad=50, mode=cv2.BORDER_CONSTANT)] #padding\n", 150 | "#aug_tfms = transforms_top_down\n", 151 | "#aug_tfms = RandomLighting(0.25,0.15) #No transformations\n", 152 | "#aug_tfms = [RandomRotate(10), RandomLighting(0.05, 0.05)] #transforms basic\n", 153 | "#aug_tfms = transforms_side_on = transforms_basic + [RandomFlip()] #transforms side on\n", 154 | "#aug_tfms = RandomBlur(blur_strengths=99, probability=100) #random blur\n", 155 | "#aug_tfms = transforms_top_down = transforms_basic + [RandomDihedral()] # transforms top down\n", 156 | "#aug_tfms = RandomRotate(90, p=0.75, mode=cv2.BORDER_REFLECT, tfm_y=TfmType.NO) #Random rotatateaug_tfms = [RandomLighting(b=0.5, c=0.1, tfm_y=TfmType.NO)] # Random Lighting\n", 157 | "#aug_tfms = [RandomRotateZoom(deg=45, zoom=2, stretch=1)] #Random Zoom Rotate\n", 158 | "#aug_tfms = [RandomRotate(27), RandomLighting(0.15, 0.15), RandomDihedral(), RandomBlur(blur_strengths=71, probability=0.5,\n", 159 | " # tfm_y=TfmType.NO), RandomRotateZoom(deg=45, zoom=2, stretch=1)] #aug_full\n", 160 | "#aug_tfms =[RandomRotate(10), RandomLighting(0.05, 0.05)] + [RandomFlip()] + [RandomDihedral()] + [RandomZoom(zoom_max=1)] + [RandomStretch(max_stretch=0.5)]" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": 9, 166 | "metadata": { 167 | "hidden": true 168 | }, 169 | "outputs": [], 170 | "source": [ 171 | "tfms = tfms_from_model(f_model, sz, aug_tfms)\n", 172 | "md = ImageClassifierData.from_csv(PATH, 'train_double', labels_csv, tfms=tfms,\n", 173 | " val_idxs=val_idxs, test_name='test_600', bs=bs)" 174 | ] 175 | }, 176 | { 177 | "cell_type": "code", 178 | "execution_count": 10, 179 | "metadata": { 180 | "hidden": true 181 | }, 182 | "outputs": [], 183 | "source": [ 184 | "x,y=next(iter((md.val_dl)))" 185 | ] 186 | }, 187 | { 188 | "cell_type": "code", 189 | "execution_count": 11, 190 | "metadata": { 191 | "hidden": true 192 | }, 193 | "outputs": [ 194 | { 195 | "data": { 196 | "image/png": "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\n", 197 | "text/plain": [ 198 | "
" 199 | ] 200 | }, 201 | "metadata": {}, 202 | "output_type": "display_data" 203 | } 204 | ], 205 | "source": [ 206 | "plt.imshow(md.trn_ds.denorm(x)[7]); #look at picture 7 from training set" 207 | ] 208 | }, 209 | { 210 | "cell_type": "code", 211 | "execution_count": 12, 212 | "metadata": { 213 | "hidden": true 214 | }, 215 | "outputs": [], 216 | "source": [ 217 | "learn = ConvLearner.pretrained(f_model, md)" 218 | ] 219 | }, 220 | { 221 | "cell_type": "markdown", 222 | "metadata": {}, 223 | "source": [ 224 | "### Cyclic Learning Rates" 225 | ] 226 | }, 227 | { 228 | "cell_type": "markdown", 229 | "metadata": {}, 230 | "source": [ 231 | "- If the Learning Rate (LR) is too small = Overfitting\n", 232 | "- If LR is too large = Divergence\n", 233 | "- However large LRs help to regularize the training\n", 234 | "- For Cyclic Learning Rates (CLR) you specify specific minimum and maximum learning rate boundaries and a stepsize" 235 | ] 236 | }, 237 | { 238 | "cell_type": "code", 239 | "execution_count": 13, 240 | "metadata": {}, 241 | "outputs": [ 242 | { 243 | "data": { 244 | "application/vnd.jupyter.widget-view+json": { 245 | "model_id": "b4063c70cc2747f8a77c6826ffb4655e", 246 | "version_major": 2, 247 | "version_minor": 0 248 | }, 249 | "text/plain": [ 250 | "HBox(children=(IntProgress(value=0, description='Epoch', max=1), HTML(value='')))" 251 | ] 252 | }, 253 | "metadata": {}, 254 | "output_type": "display_data" 255 | }, 256 | { 257 | "name": "stdout", 258 | "output_type": "stream", 259 | "text": [ 260 | " 97%|█████████▋| 100/103 [00:16<00:00, 6.20it/s, loss=0.641]" 261 | ] 262 | } 263 | ], 264 | "source": [ 265 | "learn.lr_find2(end_lr=100)" 266 | ] 267 | }, 268 | { 269 | "cell_type": "code", 270 | "execution_count": 14, 271 | "metadata": {}, 272 | "outputs": [ 273 | { 274 | "data": { 275 | "images/loss.png": "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\n", 276 | "text/plain": [ 277 | "
" 278 | ] 279 | }, 280 | "metadata": {}, 281 | "output_type": "display_data" 282 | } 283 | ], 284 | "source": [ 285 | "learn.sched.plot(1,5)" 286 | ] 287 | }, 288 | { 289 | "cell_type": "markdown", 290 | "metadata": {}, 291 | "source": [ 292 | "## Understanding Fastai code to implement 1-Cycle Policy" 293 | ] 294 | }, 295 | { 296 | "cell_type": "raw", 297 | "metadata": {}, 298 | "source": [ 299 | "Using Leslie Smith's 1 cycle policy involves using the following code and parameters:\n", 300 | "\n", 301 | "learn.fit(lr,1,cycle_len=20,use_clr_beta=(10,0.25,0.95,0.85),wds=1e-5)\n", 302 | "\n", 303 | "This portion involves looking at the first 3 hyperparameters (lr, 1 and cycle_len)\n", 304 | "\n", 305 | "- lr = This is the learning rate, based on this paper a higher LR is beneficial but is dependant on the architecture of your model and the data\n", 306 | "- 1 = denotes to 1 cycle\n", 307 | "- cycle_len = denotes the length of the cycle length. The paper provides details of what cycle length to use (They vary from as low as 12 (MNIST with LeNet architecture) to 800 (Cifar-10 with a wide ResNet architecture) but the main point is that cycle lengths between 12 and 50 produce good results and in some cases are compared to those using a much higher length (Time and Resource consuming)" 308 | ] 309 | }, 310 | { 311 | "cell_type": "markdown", 312 | "metadata": {}, 313 | "source": [ 314 | "- The 1 cycle policy involves a cycle with 2 steps of equal length\n", 315 | "- Step 1 where the learning rate increases linearly from the maximum to the minimum\n", 316 | "- Step 2 where it linearly decreases" 317 | ] 318 | }, 319 | { 320 | "cell_type": "code", 321 | "execution_count": 21, 322 | "metadata": {}, 323 | "outputs": [ 324 | { 325 | "data": { 326 | "application/vnd.jupyter.widget-view+json": { 327 | "model_id": "2e2d55f062db464b8b7ae66f2c76601f", 328 | "version_major": 2, 329 | "version_minor": 0 330 | }, 331 | "text/plain": [ 332 | "HBox(children=(IntProgress(value=0, description='Epoch', max=2), HTML(value='')))" 333 | ] 334 | }, 335 | "metadata": {}, 336 | "output_type": "display_data" 337 | }, 338 | { 339 | "name": "stdout", 340 | "output_type": "stream", 341 | "text": [ 342 | "epoch trn_loss val_loss \n", 343 | " 0 0.075126 0.062634 0.98183 \n", 344 | " 1 0.072194 0.060749 0.982329 \n" 345 | ] 346 | }, 347 | { 348 | "data": { 349 | "text/plain": [ 350 | "[array([0.06075]), 0.9823285595884601]" 351 | ] 352 | }, 353 | "execution_count": 21, 354 | "metadata": {}, 355 | "output_type": "execute_result" 356 | } 357 | ], 358 | "source": [ 359 | "learn.fit(2.0,1,cycle_len=2,use_clr_beta=(10,5,0.95,0.85),wds=1e-5)\n", 360 | "#Just an example in order to generate the cycle with 2 steps of equal length" 361 | ] 362 | }, 363 | { 364 | "cell_type": "code", 365 | "execution_count": 22, 366 | "metadata": {}, 367 | "outputs": [ 368 | { 369 | "data": { 370 | "image/png": "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\n", 371 | "text/plain": [ 372 | "
" 373 | ] 374 | }, 375 | "metadata": {}, 376 | "output_type": "display_data" 377 | } 378 | ], 379 | "source": [ 380 | "learn.sched.plot_lr()" 381 | ] 382 | }, 383 | { 384 | "cell_type": "markdown", 385 | "metadata": {}, 386 | "source": [ 387 | "- The peak in the middle of the cycle (at 100 iterations) acts as a regularization method to prevent overfitting" 388 | ] 389 | }, 390 | { 391 | "cell_type": "raw", 392 | "metadata": {}, 393 | "source": [ 394 | "This portion involves looking at the parameters within use_clr_beta which takes 4 parameters\n", 395 | "\n", 396 | "use_clr_beta=(10,5,0.95,0.85),wds=1e-5)\n", 397 | "use_clr_beta=(A,B,C,D), wds=E)\n", 398 | "\n", 399 | "A = ratio between the initial learning rate and the maximum one (paper suggests between 1/10 or 1/20)\n", 400 | "B = the % of the cycle you want to dedicate to the simulated annealing at the end. Can vary from 5% to 25% depending on architecture and data\n", 401 | "C and D = Momentum can be described as the moving average of the gradients. In this case the momentum and the learning rate are closely related. The Optimal learning rate is dependant on the momentum and the momentum is dependant on the learning rate. Optimal momentum will improve network training and the paper recommends a value between (0.9 and 0.99). Value C is the maximum momentum in this case 0.95 and Value D is the minimum momentum value which in this case is 0.85" 402 | ] 403 | }, 404 | { 405 | "cell_type": "markdown", 406 | "metadata": { 407 | "heading_collapsed": true 408 | }, 409 | "source": [ 410 | "## Batch Size and LR" 411 | ] 412 | }, 413 | { 414 | "cell_type": "code", 415 | "execution_count": null, 416 | "metadata": { 417 | "hidden": true 418 | }, 419 | "outputs": [], 420 | "source": [ 421 | "# Uncomment the below if you need to reset your precomputed activations\n", 422 | "!rm -rf {PATH}tmp" 423 | ] 424 | }, 425 | { 426 | "cell_type": "code", 427 | "execution_count": null, 428 | "metadata": { 429 | "hidden": true 430 | }, 431 | "outputs": [], 432 | "source": [ 433 | "#Use low BS and low LR\n", 434 | "bs=8\n", 435 | "lr=0.01" 436 | ] 437 | }, 438 | { 439 | "cell_type": "code", 440 | "execution_count": null, 441 | "metadata": { 442 | "hidden": true 443 | }, 444 | "outputs": [], 445 | "source": [ 446 | "%time\n", 447 | "learn.fit(lr,2,cycle_len=2,use_clr_beta=(10,0.25,0.95,0.85),wds=1e-5)\n", 448 | "#better results with using lower 5% of the cycle dedicated to the end of the cycle" 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "execution_count": null, 454 | "metadata": { 455 | "hidden": true 456 | }, 457 | "outputs": [], 458 | "source": [ 459 | "fig,ax = plt.subplots(1,1,figsize=(4,4))\n", 460 | "ax.plot(list(range(4)),learn.sched.rec_metrics)\n", 461 | "ax.set_title('Low BS and Low LR')\n", 462 | "ax.set_xlabel('Epoch')\n", 463 | "ax.set_ylabel('Accuracy')" 464 | ] 465 | }, 466 | { 467 | "cell_type": "code", 468 | "execution_count": null, 469 | "metadata": { 470 | "hidden": true 471 | }, 472 | "outputs": [], 473 | "source": [ 474 | "# Uncomment the below if you need to reset your precomputed activations\n", 475 | "!rm -rf {PATH}tmp" 476 | ] 477 | }, 478 | { 479 | "cell_type": "code", 480 | "execution_count": null, 481 | "metadata": { 482 | "hidden": true 483 | }, 484 | "outputs": [], 485 | "source": [ 486 | "#High BS and Low LR\n", 487 | "bs=128\n", 488 | "lr=0.01" 489 | ] 490 | }, 491 | { 492 | "cell_type": "code", 493 | "execution_count": null, 494 | "metadata": { 495 | "hidden": true 496 | }, 497 | "outputs": [], 498 | "source": [ 499 | "%time\n", 500 | "learn.fit(lr,2,cycle_len=2,use_clr_beta=(10,0.25,0.95,0.85),wds=1e-5)" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "execution_count": null, 506 | "metadata": { 507 | "hidden": true 508 | }, 509 | "outputs": [], 510 | "source": [ 511 | "fig,ax = plt.subplots(1,1,figsize=(4,4))\n", 512 | "ax.plot(list(range(4)),learn.sched.rec_metrics)\n", 513 | "ax.set_title('High BS and Low LR')\n", 514 | "ax.set_xlabel('Epoch')\n", 515 | "ax.set_ylabel('Accuracy')" 516 | ] 517 | }, 518 | { 519 | "cell_type": "code", 520 | "execution_count": null, 521 | "metadata": { 522 | "hidden": true 523 | }, 524 | "outputs": [], 525 | "source": [ 526 | "# Uncomment the below if you need to reset your precomputed activations\n", 527 | "!rm -rf {PATH}tmp" 528 | ] 529 | }, 530 | { 531 | "cell_type": "code", 532 | "execution_count": null, 533 | "metadata": { 534 | "hidden": true 535 | }, 536 | "outputs": [], 537 | "source": [ 538 | "#Low BS and High LR\n", 539 | "bs=8\n", 540 | "lr=2.0" 541 | ] 542 | }, 543 | { 544 | "cell_type": "code", 545 | "execution_count": null, 546 | "metadata": { 547 | "hidden": true 548 | }, 549 | "outputs": [], 550 | "source": [ 551 | "%time\n", 552 | "learn.fit(lr,2,cycle_len=2,use_clr_beta=(10,0.25,0.95,0.85),wds=1e-5)" 553 | ] 554 | }, 555 | { 556 | "cell_type": "code", 557 | "execution_count": null, 558 | "metadata": { 559 | "hidden": true 560 | }, 561 | "outputs": [], 562 | "source": [ 563 | "fig,ax = plt.subplots(1,1,figsize=(4,4))\n", 564 | "ax.plot(list(range(4)),learn.sched.rec_metrics)\n", 565 | "ax.set_title('Low BS and High LR')\n", 566 | "ax.set_xlabel('Epoch')\n", 567 | "ax.set_ylabel('Accuracy')" 568 | ] 569 | }, 570 | { 571 | "cell_type": "code", 572 | "execution_count": null, 573 | "metadata": { 574 | "hidden": true 575 | }, 576 | "outputs": [], 577 | "source": [ 578 | "# Uncomment the below if you need to reset your precomputed activations\n", 579 | "!rm -rf {PATH}tmp" 580 | ] 581 | }, 582 | { 583 | "cell_type": "code", 584 | "execution_count": null, 585 | "metadata": { 586 | "hidden": true 587 | }, 588 | "outputs": [], 589 | "source": [ 590 | "#High BS and High LR\n", 591 | "bs=128\n", 592 | "lr=2.0" 593 | ] 594 | }, 595 | { 596 | "cell_type": "code", 597 | "execution_count": null, 598 | "metadata": { 599 | "hidden": true 600 | }, 601 | "outputs": [], 602 | "source": [ 603 | "%time\n", 604 | "learn.fit(lr,2,cycle_len=2,use_clr_beta=(10,0.25,0.95,0.85),wds=1e-5)" 605 | ] 606 | }, 607 | { 608 | "cell_type": "code", 609 | "execution_count": null, 610 | "metadata": { 611 | "hidden": true 612 | }, 613 | "outputs": [], 614 | "source": [ 615 | "fig,ax = plt.subplots(1,1,figsize=(4,4))\n", 616 | "ax.plot(list(range(4)),learn.sched.rec_metrics)\n", 617 | "ax.set_title('High BS and High LR')\n", 618 | "ax.set_xlabel('Epoch')\n", 619 | "ax.set_ylabel('Accuracy')" 620 | ] 621 | }, 622 | { 623 | "cell_type": "markdown", 624 | "metadata": {}, 625 | "source": [ 626 | "## BS and LR analysis" 627 | ] 628 | }, 629 | { 630 | "cell_type": "markdown", 631 | "metadata": {}, 632 | "source": [ 633 | "![title](img/BS_LR.png)" 634 | ] 635 | }, 636 | { 637 | "cell_type": "markdown", 638 | "metadata": {}, 639 | "source": [ 640 | "- Low BS and High LR as well as High BS and High LR produce the highest accuracy" 641 | ] 642 | }, 643 | { 644 | "cell_type": "markdown", 645 | "metadata": { 646 | "heading_collapsed": true 647 | }, 648 | "source": [ 649 | "## Learning & Validation Losses Weight Decay " 650 | ] 651 | }, 652 | { 653 | "cell_type": "markdown", 654 | "metadata": { 655 | "hidden": true 656 | }, 657 | "source": [ 658 | "- Use this to test the Weight Decay" 659 | ] 660 | }, 661 | { 662 | "cell_type": "code", 663 | "execution_count": null, 664 | "metadata": { 665 | "hidden": true 666 | }, 667 | "outputs": [], 668 | "source": [ 669 | "%time\n", 670 | "learn.fit(3.0,1,cycle_len=30,use_clr_beta=(10,5,0.95,0.85),wds=1e-1)\n", 671 | "#better results with using lower 5% of the cycle dedicated to the end of the cycle" 672 | ] 673 | }, 674 | { 675 | "cell_type": "code", 676 | "execution_count": null, 677 | "metadata": { 678 | "hidden": true 679 | }, 680 | "outputs": [], 681 | "source": [ 682 | "learn.sched.plot_lr()" 683 | ] 684 | }, 685 | { 686 | "cell_type": "code", 687 | "execution_count": null, 688 | "metadata": { 689 | "hidden": true 690 | }, 691 | "outputs": [], 692 | "source": [ 693 | "fig,ax = plt.subplots(2,1,figsize=(8,12))\n", 694 | "ax[0].plot(list(range(30)),learn.sched.val_losses, label='Validation loss')\n", 695 | "ax[0].plot(list(range(30)),[learn.sched.losses[i] for i in range(32,30*34,33)], label='Training loss')\n", 696 | "ax[0].set_xlabel('Epoch')\n", 697 | "ax[0].set_ylabel('Loss')\n", 698 | "ax[0].legend(loc='upper right')\n", 699 | "ax[1].plot(list(range(30)),learn.sched.rec_metrics)\n", 700 | "ax[1].set_xlabel('Epoch')\n", 701 | "ax[1].set_ylabel('Accuracy')" 702 | ] 703 | }, 704 | { 705 | "cell_type": "markdown", 706 | "metadata": {}, 707 | "source": [ 708 | "## Learning & Validation Losses based on Weight Decay Analysis" 709 | ] 710 | }, 711 | { 712 | "cell_type": "markdown", 713 | "metadata": {}, 714 | "source": [ 715 | "![title](img/Under_over.png)" 716 | ] 717 | }, 718 | { 719 | "cell_type": "markdown", 720 | "metadata": {}, 721 | "source": [ 722 | "- Pictorial explanation of the tradeoff between underfitting and overfitting\n" 723 | ] 724 | }, 725 | { 726 | "cell_type": "markdown", 727 | "metadata": {}, 728 | "source": [ 729 | "### 1e5, 1e4, 1e3, 1e2" 730 | ] 731 | }, 732 | { 733 | "cell_type": "markdown", 734 | "metadata": {}, 735 | "source": [ 736 | "![title](img/loss.png)" 737 | ] 738 | }, 739 | { 740 | "cell_type": "markdown", 741 | "metadata": {}, 742 | "source": [ 743 | "- The graphs from left to right potray Training (Orange) and Validation (Blue) Loss plots with a Weight Decay(wds) of 1e5, 1e4, 1e3 and 1e2\n", 744 | "- The graphs show that the Training loss is above the Validation loss when the wds is 1e5 and 1e4 but the two losses then intersect when the wds is 1e3 and 1e2" 745 | ] 746 | }, 747 | { 748 | "cell_type": "code", 749 | "execution_count": null, 750 | "metadata": {}, 751 | "outputs": [], 752 | "source": [] 753 | } 754 | ], 755 | "metadata": { 756 | "kernelspec": { 757 | "display_name": "Python 3", 758 | "language": "python", 759 | "name": "python3" 760 | }, 761 | "language_info": { 762 | "codemirror_mode": { 763 | "name": "ipython", 764 | "version": 3 765 | }, 766 | "file_extension": ".py", 767 | "mimetype": "text/x-python", 768 | "name": "python", 769 | "nbconvert_exporter": "python", 770 | "pygments_lexer": "ipython3", 771 | "version": "3.6.5" 772 | } 773 | }, 774 | "nbformat": 4, 775 | "nbformat_minor": 2 776 | } 777 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## A Disciplined Approach to Neural Network Hyper-parameters: Part 1 - Learning Rate, Batch Size, Momentum and Weight Decay 2 | 3 | - Reviewing the approach for setting Hyperparameters by Leslie Smith. 4 | - 'Setting the hyper-parameters remains a black art that requires years of experience to acquire' - Leslie Smith 5 | 6 | You can review the paper here: (https://arxiv.org/abs/1803.09820) 7 | 8 | The 1 cycle policy involves a cycle with 2 steps of equal length: Step 1 where the learning rate increases linearly from the maximum to the minimum and Step 2 where it linearly decreases. 9 | 10 | ![](/images/one_cycle.png) 11 | 12 | The peak in the middle of the cycle (at 100 iterations) acts as a regularization method to prevent overfitting 13 | 14 | ### Batch Size and Learning Rate Analysis 15 | 16 | ![](/images/BS_LR.png) 17 | 18 | Low BS and High LR as well as High BS and High LR produce the highest accuracy 19 | 20 | ### Learning and Validation Loss Analysis based on Weight Decay 21 | 22 | ![](/images/Under_over.png) 23 | 24 | Pictorial explanation of the tradeoff between underfitting and overfitting 25 | 26 | ![](/images/loss.png) 27 | 28 | - The graphs from left to right potray Training (Orange) and Validation (Blue) Loss plots with a Weight Decay(wds) of 1e5, 1e4, 1e3 and 1e2 29 | - The graphs show that the Training loss is above the Validation loss when the wds is 1e5 and 1e4 but the two losses then intersect when the wds is 1e3 and 1e2 30 | -------------------------------------------------------------------------------- /images/BS_LR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/BS_LR.png -------------------------------------------------------------------------------- /images/HighBSHighLR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/HighBSHighLR.png -------------------------------------------------------------------------------- /images/HighBSLowLR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/HighBSLowLR.png -------------------------------------------------------------------------------- /images/LowBSHighLR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/LowBSHighLR.png -------------------------------------------------------------------------------- /images/LowBSLowLR.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/LowBSLowLR.png -------------------------------------------------------------------------------- /images/Under_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/Under_over.png -------------------------------------------------------------------------------- /images/loss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/loss.png -------------------------------------------------------------------------------- /images/one_cycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/asvcode/1_cycle/0887e7877a7579e52c6fae85a7f8db22c8a1dd33/images/one_cycle.png -------------------------------------------------------------------------------- /images/test: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------