File size: 238,939 Bytes
7998382 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 | {
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "e7e09770",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import xarray as xr\n",
"from sklearn.model_selection import train_test_split\n",
"import matplotlib.pyplot as plt\n",
"from tensorflow.keras import layers\n",
"from tensorflow import keras\n",
"import keras_tuner as kt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "797deb25",
"metadata": {},
"outputs": [],
"source": [
"#data = xr.open_dataset('conv_train_1.nc')\n",
"data = xr.open_dataset(r'C:\\Users\\marku\\Desktop\\4år\\AML\\Final_project_huggingface\\finalprojectdata\\conv_train_1.nc')"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "399483a9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(99766, 27, 27)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.images.values.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "a92d3499",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=\"dark\"],\n",
"html[data-theme=\"dark\"],\n",
"body[data-theme=\"dark\"],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1f1f1f;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block !important;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 0 20px 0 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: inline-block;\n",
" opacity: 0;\n",
" height: 0;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:focus + label {\n",
" border: 2px solid var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: \"►\";\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: \"▼\";\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: \"(\";\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: \")\";\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: \",\";\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-index-preview {\n",
" grid-column: 2 / 5;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data,\n",
".xr-index-data-in:checked ~ .xr-index-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-index-name div,\n",
".xr-index-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data,\n",
".xr-index-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt,\n",
".xr-attrs dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2,\n",
".xr-no-icon {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'><xarray.Dataset> Size: 298MB\n",
"Dimensions: (sample: 99766, x: 27, y: 27)\n",
"Coordinates:\n",
" * sample (sample) int32 399kB 0 1 2 3 4 5 ... 99761 99762 99763 99764 99765\n",
" * x (x) int32 108B 0 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 26\n",
" * y (y) int32 108B 0 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 26\n",
"Data variables:\n",
" images (sample, x, y) float32 291MB 1.093e+03 1.093e+03 ... 2.133e+03\n",
" labels (sample) float64 798kB ...\n",
" vx (sample) float64 798kB ...\n",
" vy (sample) float64 798kB ...\n",
" v (sample) float64 798kB ...\n",
" smb (sample) float64 798kB ...\n",
" z (sample) float64 798kB ...\n",
" s (sample) float64 798kB ...\n",
" temp (sample) float64 798kB ...\n",
"Attributes:\n",
" description: CNN data with elevation images. Scalar features are everyth...</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-325ce304-d703-4629-8188-92453334e4fc' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-325ce304-d703-4629-8188-92453334e4fc' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>sample</span>: 99766</li><li><span class='xr-has-index'>x</span>: 27</li><li><span class='xr-has-index'>y</span>: 27</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-e05942e2-91b1-4af4-ad7e-31c4865de6ff' class='xr-section-summary-in' type='checkbox' checked><label for='section-e05942e2-91b1-4af4-ad7e-31c4865de6ff' class='xr-section-summary' >Coordinates: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sample</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>int32</div><div class='xr-var-preview xr-preview'>0 1 2 3 ... 99762 99763 99764 99765</div><input id='attrs-d9bfad75-a4c0-4aeb-a518-4b0116ff42cf' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d9bfad75-a4c0-4aeb-a518-4b0116ff42cf' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-72899ae9-6565-463d-b292-4e34a20d30b7' class='xr-var-data-in' type='checkbox'><label for='data-72899ae9-6565-463d-b292-4e34a20d30b7' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, ..., 99763, 99764, 99765],\n",
" shape=(99766,), dtype=int32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>int32</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 6 ... 21 22 23 24 25 26</div><input id='attrs-6dd6f892-f363-4478-b2b6-0023f72d0d1c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-6dd6f892-f363-4478-b2b6-0023f72d0d1c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-96db3226-10fe-475c-b67f-ae0f241b429f' class='xr-var-data-in' type='checkbox'><label for='data-96db3226-10fe-475c-b67f-ae0f241b429f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>int32</div><div class='xr-var-preview xr-preview'>0 1 2 3 4 5 6 ... 21 22 23 24 25 26</div><input id='attrs-6b4993b6-6a8a-4f62-9431-793cc4f74df4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-6b4993b6-6a8a-4f62-9431-793cc4f74df4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f3e0a389-a07a-408d-9db1-2d63b76fd12f' class='xr-var-data-in' type='checkbox'><label for='data-f3e0a389-a07a-408d-9db1-2d63b76fd12f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26], dtype=int32)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-4e4bae80-51a1-446f-af0b-cbbf15625e37' class='xr-section-summary-in' type='checkbox' checked><label for='section-4e4bae80-51a1-446f-af0b-cbbf15625e37' class='xr-section-summary' >Data variables: <span>(9)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>images</span></div><div class='xr-var-dims'>(sample, x, y)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>1.093e+03 1.093e+03 ... 2.133e+03</div><input id='attrs-51ed051a-1fa9-4920-9a04-03ba23d444b2' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-51ed051a-1fa9-4920-9a04-03ba23d444b2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2deb8bf8-52c4-4def-ab09-e8bca9b095d2' class='xr-var-data-in' type='checkbox'><label for='data-2deb8bf8-52c4-4def-ab09-e8bca9b095d2' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[[1092.5057, 1093.3561, ..., 1187.6576, 1193.0239],\n",
" [1094.4419, 1095.7927, ..., 1187.452 , 1193.2283],\n",
" ...,\n",
" [1162.5809, 1159.64 , ..., 1221.593 , 1262.5428],\n",
" [1162.889 , 1158.089 , ..., 1219.4219, 1261.0667]],\n",
"\n",
" [[1284.6726, 1281.334 , ..., 1228.7972, 1223.2537],\n",
" [1283.8816, 1283.3535, ..., 1225.3945, 1219.3942],\n",
" ...,\n",
" [1190.4187, 1189.1447, ..., 1124.5326, 1122.3501],\n",
" [1187.6077, 1185.7454, ..., 1120.5969, 1116.4183]],\n",
"\n",
" ...,\n",
"\n",
" [[1154.1436, 1161.9762, ..., 1217.0553, 1218.4692],\n",
" [1159.9055, 1166.1603, ..., 1219.8105, 1220.801 ],\n",
" ...,\n",
" [1210.8943, 1210.7345, ..., 1256.9983, 1259.825 ],\n",
" [1213.844 , 1213.547 , ..., 1261.5992, 1264.7634]],\n",
"\n",
" [[2119.1958, 2120.359 , ..., 2161.1162, 2157.5664],\n",
" [2121.8757, 2118.1497, ..., 2159.7742, 2155.9841],\n",
" ...,\n",
" [2091.6492, 2094.2234, ..., 2132.212 , 2132.3438],\n",
" [2090.6233, 2094.323 , ..., 2131.7812, 2132.9963]]],\n",
" shape=(99766, 27, 27), dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>labels</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-ae920f8b-2810-4386-af7e-f1b9e7a898fd' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-ae920f8b-2810-4386-af7e-f1b9e7a898fd' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-985eb388-85c8-4397-bede-4149969fd72e' class='xr-var-data-in' type='checkbox'><label for='data-985eb388-85c8-4397-bede-4149969fd72e' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>vx</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-c8455059-1b31-48b6-8c32-a70855db8279' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c8455059-1b31-48b6-8c32-a70855db8279' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-74c6f0d5-5771-489f-a7e3-8f30ca526d1c' class='xr-var-data-in' type='checkbox'><label for='data-74c6f0d5-5771-489f-a7e3-8f30ca526d1c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>vy</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-43cb1bf7-831e-48a2-acfd-0bb5d0f745ac' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-43cb1bf7-831e-48a2-acfd-0bb5d0f745ac' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-83037d4c-d513-4dd5-bfa6-d3660cd463c4' class='xr-var-data-in' type='checkbox'><label for='data-83037d4c-d513-4dd5-bfa6-d3660cd463c4' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>v</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-d08a292f-a1a1-4791-8d29-da4a3977d7ab' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-d08a292f-a1a1-4791-8d29-da4a3977d7ab' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9a95d407-5165-49dd-b743-a87597fa8673' class='xr-var-data-in' type='checkbox'><label for='data-9a95d407-5165-49dd-b743-a87597fa8673' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>smb</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-dc67c54e-9e3d-4724-ba38-befb681a6ea6' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-dc67c54e-9e3d-4724-ba38-befb681a6ea6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-c51c32b0-fbc2-42ec-bed5-64d482091f65' class='xr-var-data-in' type='checkbox'><label for='data-c51c32b0-fbc2-42ec-bed5-64d482091f65' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>z</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-68b90a3a-aefc-436b-a8c8-001035340a3e' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-68b90a3a-aefc-436b-a8c8-001035340a3e' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f96d2b4d-f2a3-40c0-8cf4-9254ddf80a17' class='xr-var-data-in' type='checkbox'><label for='data-f96d2b4d-f2a3-40c0-8cf4-9254ddf80a17' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>s</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-be8270eb-bae2-4968-96df-9b696f4f9eac' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-be8270eb-bae2-4968-96df-9b696f4f9eac' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-58ec6932-8151-4fcb-a00e-7b8f28c9bc95' class='xr-var-data-in' type='checkbox'><label for='data-58ec6932-8151-4fcb-a00e-7b8f28c9bc95' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>temp</span></div><div class='xr-var-dims'>(sample)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-9cfc485e-00dd-4437-935b-60e8c66e413a' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-9cfc485e-00dd-4437-935b-60e8c66e413a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8ed5356d-68e1-4ab4-842f-0cec63a80686' class='xr-var-data-in' type='checkbox'><label for='data-8ed5356d-68e1-4ab4-842f-0cec63a80686' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>[99766 values with dtype=float64]</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-16433b4b-ab97-48b0-80c4-a39567c3b49e' class='xr-section-summary-in' type='checkbox' ><label for='section-16433b4b-ab97-48b0-80c4-a39567c3b49e' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>sample</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-4d96494b-f08a-4c0e-b1f3-77875fe7258c' class='xr-index-data-in' type='checkbox'/><label for='index-4d96494b-f08a-4c0e-b1f3-77875fe7258c' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,\n",
" ...\n",
" 99756, 99757, 99758, 99759, 99760, 99761, 99762, 99763, 99764, 99765],\n",
" dtype='int32', name='sample', length=99766))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-15381c05-1530-45eb-9528-cbd765155d91' class='xr-index-data-in' type='checkbox'/><label for='index-15381c05-1530-45eb-9528-cbd765155d91' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26],\n",
" dtype='int32', name='x'))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><input type='checkbox' disabled/><label></label><input id='index-03c6292a-8780-4246-833b-feb4623db030' class='xr-index-data-in' type='checkbox'/><label for='index-03c6292a-8780-4246-833b-feb4623db030' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Index([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
" 18, 19, 20, 21, 22, 23, 24, 25, 26],\n",
" dtype='int32', name='y'))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-b2c5b526-b4e3-49e3-a71b-2c8390665feb' class='xr-section-summary-in' type='checkbox' checked><label for='section-b2c5b526-b4e3-49e3-a71b-2c8390665feb' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>description :</span></dt><dd>CNN data with elevation images. Scalar features are everything from Niccolo 30M parquet. Images are 27x27 pixels.</dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset> Size: 298MB\n",
"Dimensions: (sample: 99766, x: 27, y: 27)\n",
"Coordinates:\n",
" * sample (sample) int32 399kB 0 1 2 3 4 5 ... 99761 99762 99763 99764 99765\n",
" * x (x) int32 108B 0 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 26\n",
" * y (y) int32 108B 0 1 2 3 4 5 6 7 8 9 ... 18 19 20 21 22 23 24 25 26\n",
"Data variables:\n",
" images (sample, x, y) float32 291MB 1.093e+03 1.093e+03 ... 2.133e+03\n",
" labels (sample) float64 798kB ...\n",
" vx (sample) float64 798kB ...\n",
" vy (sample) float64 798kB ...\n",
" v (sample) float64 798kB ...\n",
" smb (sample) float64 798kB ...\n",
" z (sample) float64 798kB ...\n",
" s (sample) float64 798kB ...\n",
" temp (sample) float64 798kB ...\n",
"Attributes:\n",
" description: CNN data with elevation images. Scalar features are everyth..."
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f57481cb",
"metadata": {},
"outputs": [],
"source": [
"scalar_feats = ['vx', 'vy', 'v', 'smb', 'z', 's', 'temp']\n",
"\n",
"feats = np.array([data[feat].values for feat in scalar_feats]).T\n",
"\n",
"train_images, test_images, train_feats, test_feats, ytrain, ytest =\\\n",
" train_test_split(data.images.values, feats, data.labels.values, test_size=0.2, random_state=42)\n",
"\n",
"#---------standardize labels-------------------\n",
"# Compute mean and std from training labels\n",
"y_mean = ytrain.mean()\n",
"y_std = ytrain.std()\n",
"\n",
"# Standardize ytrain and ytest using training statistics\n",
"ytrain_std = (ytrain - y_mean) / y_std\n",
"ytest_std = (ytest - y_mean) / y_std\n",
"#to convert back to original scale, use:\n",
"# ypreds_orig = ypreds * y_std + y_mean\n",
"#----------------------------------------------\n",
"\n",
"# ytrain = ytrain.values\n",
"# ytest = ytest.values\n",
"\n",
"# explicitly illustrating standardization\n",
"def standardizeimg(img, mu, sigma):\n",
" return (img-mu)/(sigma).astype(np.float32)\n",
"\n",
"# save for scaling test dataA\n",
"mu_train = np.mean(train_images)\n",
"sigma_train = np.std(train_images)\n",
"\n",
"# Standardize pixel distribution to have zero mean and unit variance\n",
"train_images = standardizeimg(img=train_images, mu=mu_train, sigma=sigma_train)\n",
"test_images = standardizeimg(img=test_images, mu=np.mean(test_images), sigma=np.std(test_images))\n",
"\n",
"# adapt to format required by tensorflow; Using channels_last --> (n_samples, img_rows, img_cols, n_channels)\n",
"img_rows, img_cols = 27, 27 # input image dimensions\n",
"train_images = train_images.reshape(train_images.shape[0], img_rows, img_cols, 1)\n",
"test_images = test_images.reshape(test_images.shape[0], img_rows, img_cols, 1)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "73c5f289",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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EXnmmWfk7//+7we///Cx14DVq1fLRz7yERk/frxks1nZb7/95LHHHhtsv+WWW2Tu3LkyYcIE7zuO5/Pt67vf/a7ss88+0tbWJm1tbXLYYYfJ7373u8H2kd4bIlvHRxdeeKFMmDBBcrmczJs3T15//fUhn5k3b55MmzZN0um0TJkyRebPnz9kXOTjnJMvfOEL0tnZKZlMRo455hh55plnRu/L/w1i4t2gvr4+2XfffeXaa6/1tr/88sty5JFHyqxZs2Tx4sXy5JNPyuc//3lJp9N1n/3Wt77lzS98/vnnpVaryfe+9z155pln5Jvf/KZcd911ctlllzV0jL/61a/k4Ycfls7Ozrq2Aw88UBYsWCDPPfec3HnnneKckzlz5ki1Wm1o28C27r33Xvmnf/oneeihh+Tuu++WSqUic+bMkb6+vsHPrF27dsh///Vf/yWRSET+/u//vm572jOxrUsuucR7bw+Xz+fl8ccfl89//vPy+OOPyy233CIvvviizJs3b/AzO+64Y93xffGLX5RcLicnnXRSE2cC2KqRZ0JE5MQTTxxy391+++2DbWvWrJE1a9bIlVdeKcuWLZP//u//ljvuuEPOOeecwc8cfvjhdffuxz72MZkxY4YcdNBB6vFdfPHFcscdd8iPf/xjee655+Tiiy+WCy+8UH796183vG/8dZg9e/aQ+2PZsmWDbbvttptce+21smzZMrn//vtlxowZMmfOHHnzzTfrttNIvzxgyZIlQ/Z59913i4jI+9///sHPjHQPDjj33HOHbOt73/veYFsz46QFCxYM2c6ZZ5452PbAAw/IPvvsIzfffLM89dRTcvbZZ8sZZ5whv/nNbwY/s2LFCnnXu94lRx11lCxdulQuu+wyueiii+Tmm28e/Ew+n5edd95ZrrjiiiE/4NjW5s2b5YgjjpBEIiG/+93v5Nlnn5WrrrpKxowZM/iZvr4+OeKII+SKK67wboPn8+1r6tSpcsUVV8ijjz4qjz76qBx33HFy6qmnDpngWu8NEZFPfvKTcuutt8pNN90k999/v/T29srJJ588ZIx/7LHHys9//nN54YUX5Oabb5aXX35Z/uEf/sE8tm984xty9dVXy7XXXitLliyRyZMnywknnCA9PT2jexL+ljg0TUTcrbfeOmTZaaed5j7ykY+MuO4TTzzhpk6d6tauXevdznDf+MY33E477TTidl9//XW3ww47uKefftpNnz7dffOb3zQ//+STTzoRcS+99NKI2wZGsn79eici7t5771U/c+qpp7rjjjuubnkjz8Ttt9/uZs2a5Z555hknIm7p0qVNHd8jjzziRMS9+uqr6mf2228/d/bZZze1XUDjeybOPPNMd+qppza1nZ///OcumUy6crnsbS+VSq6jo8N96UtfMrcze/bsus8ccMAB7nOf+1zgfeOt5/LLL3f77rtvw5/v6upyIuLuueeeIcubHasM98///M9ul112cbVabXBZI/fg0Ucf7f75n/+5qX35xklBjvld73qX++hHPzr4/y+55BI3a9asIZ8577zz3KGHHupdXxt7feYzn3FHHnlkQ8ewYsWKht9xPJ9vX2PHjnU/+MEPnHMjvze2bNniEomEu+mmmwaXrV692kWjUXfHHXeo6/361792kUjElUolb3utVnOTJ092V1xxxeCy/v5+197e7q677romvxEG8BvvUVCr1eS2226T3XbbTebOnSsdHR1yyCGH1P3TrHw+L6effrpce+216k9Gh+vq6pJx48aNuP/58+fLv/7rv8rs2bNH3GZfX58sWLBAdtppJ9lxxx0bOg7AMvDP3bR79Y033pDbbrut7qfzjTwTb7zxhpx77rnyox/9SLLZbODji0QiQ37DsK3HHntMnnjiCX57gFGjPROLFy+Wjo4O2W233eTcc8+V9evXj7idtrY2icfj3vaFCxfKhg0b5KyzzjK3c+SRR8rChQtl9erV4pyTRYsWyYsvvihz584NvG+8NS1fvlw6Oztlp512kg9+8IPyyiuveD9XKpXk+uuvl/b2dtl3330HlwcZqwzf7o9//GM5++yzh/zGvNF78MYbb5QJEybI7Nmz5dOf/vSIv13TxkkXXHCBTJgwQQ4++GC57rrrpFarNbWdBx98UObMmTPkM3PnzpVHH31UyuWyua1tLVy4UA466CB5//vfLx0dHbL//vvL97///YbXt46X5/PtpVqtyk033SR9fX1y2GGHDS633huPPfaYlMvlIfdqZ2en7LXXXvLAAw9497Np0ya58cYb5fDDD5dEIuH9zIoVK2TdunVDtptKpeToo49Wt4sG/KVn/n+NZNhPUgd+IpzNZt3VV1/tli5d6r72ta+5SCTiFi9ePPi5j3/84+6cc85RtzPcSy+95Nra2tz3v/9983i++tWvuhNOOGHwJ8vaT13/8z//0+VyOScibtasWfy2G6OiVqu5U045xfyJ/te//nU3duxYVygUhiwf6Zmo1WruxBNPdF/+8pedc839NmBAoVBwBx54oPvwhz+sfuYTn/iE22OPPRreJmDRnombbrrJ/fa3v3XLli1zCxcudPvuu6+bPXu26+/v925nw4YNbtq0ae7f/u3f1H2ddNJJ7qSTThrxmIrFojvjjDOciLh4PO6SyaT74Q9/qH6+kX3jref22293v/zlL91TTz3l7r77bnf00Ue7SZMmuQ0bNgx+5je/+Y3L5XIuEom4zs5O98gjjwzZRrNjleF+9rOfuVgs5lavXj1keSP34PXXX+/uvvtut2zZMvfTn/7UzZgxwx1//PHqvrRx0pe//GX3wAMPuKVLl7orr7zSZbPZwfeIzy9+8QuXTCbd008/Pbhs1113dV/5yleGfO6Pf/yjExG3Zs2aum1oY69UKuVSqZS79NJL3eOPP+6uu+46l06n3f/8z//UfbbRdxzP59vLU0895XK5nIvFYq69vd3ddtttg20jvTduvPFGl0wm67Z5wgknuI9//ONDll1yySUum806EXGHHnrokH5huIF7ffhzfO6557o5c+Zsz9f9m8bEO4DhL6HVq1c7EXGnn376kM+dcsop7oMf/KBzbus/6Zg5c6br6elRt7Ot1atXu5kzZw55+fk8+uijbtKkSUMeDK3z37Jli3vxxRfdvffe60455RR3wAEH1E2EgGb94z/+o5s+fbp77bXX1M/svvvu7oILLhiyrJFn4j/+4z/c4Ycf7iqVinOu+Yl3qVRyp556qtt///1dV1eX9zP5fN61t7e7K6+8sqFtAiNp5Jlwzrk1a9a4RCLhbr755rq2rq4ud8ghh7gTTzxR/aeAr732motGo+6Xv/zliMf07//+72633XZzCxcudE8++aS75pprXEtLi7v77rsD7Rt/HXp7e92kSZPcVVddNWTZ8uXL3YMPPujOPvtsN2PGDPfGG28455ofq/jMmTPHnXzyyXXLm7kHBzz66KNORNxjjz1W19boOMk556688krX1tbmbVu0aJHL5XJ1E+Fdd93VffWrXx2y7P7773ci4tauXVu3HW3slUgk3GGHHTZk2YUXXuj9J+uNvON4Pt9+isWiW758uVuyZIn77Gc/6yZMmOCeeeYZ72eHvze0iffxxx/vzjvvvCHL3nzzTffCCy+4u+66yx1xxBHuXe9615A/B9mW9kOmj33sY27u3LlBviYcE+9Ahr+EisWii8fjdT9NveSSS9zhhx/unNv6906RSMTFYrHB/0TERaNRd/TRRw9Zb/Xq1W633XZz8+fPd9Vq1TyWb37zm+p2p0+frq5XLBZdNpt1P/nJT5r67sC2LrjgAjd16lT3yiuvqJ+57777nIi4J554YsjyRp6JU0891UWj0brPxGIxd8YZZ5jHViqV3Hve8x63zz77mD/V/eEPf+gSiYRbv359418cUDTyTGxr5syZQ/6Gzjnnuru73WGHHebe+c53mj8c/dKXvuQmTpw44uA7n8+7RCLhfvvb3w5Zfs4559QNoBrdN/56HH/88e78889X22fOnDk4wWxmrOKzcuVKF41G3a9+9ashy5u5B7dVq9Xq/n7VuebGSc79/wnzunXrhixfvHixa2lpcd/73vfq1jnqqKPcRRddNGTZLbfc4uLxuPeZ0ybe06ZNq/vhwHe+8x3X2dlZ99mRJt48n38b3vnOd9b9tnpb2743/vd//9eJiNu0adOQz+yzzz7u//yf/6Nu47XXXnMi4h544AFv+8svv+xExD3++ONDls+bN2/E8Rd0/GHIKEgmk3LwwQfXRce8+OKLMn36dBER+exnPysf+9jHhrTvvffe8s1vflNOOeWUwWWrV6+WY489drAKeTRq/xn+/Pnz5fjjjx+ybO7cuTJ//nz56Ec/aq7rnJNisTji9wOGc87JhRdeKLfeeqssXrxYdtppJ/WzN9xwgxx44IFD/oZQpLFn4tvf/rb83//7fwfb16xZI3PnzpWf/exncsghh6j7LJfL8oEPfECWL18uixYtkvHjx5vHN2/ePJk4caL5nQFLM8/EgI0bN8prr70mU6ZMGVzW3d0tc+fOlVQqJQsXLvQmYwzsb8GCBXLGGWeof6M3oFwuS7lcrnufxGKxIX/32ui+8dejWCzKc889J0cddZT6mW3HAo2OVTQLFiyQjo4Oefe73z1keaP34HDPPPOMlMvlIc9Is+MkEZGlS5dKOp0eUudj8eLFcvLJJ8vXv/51+fjHP163zmGHHTakyrmIyF133SUHHXTQiM/cto444ghzfNgons+/Hdb4fPh748ADD5REIiF33323fOADHxCRrakyTz/9tHzjG98w9yEi6n522mknmTx5stx9992y//77i8jW+g333nuvfP3rXw/83f7m/QUn/X9Venp63NKlS93SpUudiAz+LfdAleRbbrnFJRIJd/3117vly5e7a665xsViMfeHP/xB3aZ4/sn6zJkz3XHHHedef/11t3bt2sH/trX77ru7W265Rd3u8J+6vvzyy+6rX/2qe/TRR92rr77qHnjgAXfqqae6cePGDf7zMqAZn/jEJ1x7e7tbvHjxkPs0n88P+VxXV5fLZrPuu9/9bkPbHf5MDKf9NmDbZ6JcLrt58+a5qVOnuieeeGLI8RWLxSHrLV++3EUiEfe73/2uoeMDNCM9Ez09Pe5Tn/qUe+CBB9yKFSvcokWL3GGHHeZ22GEH193d7Zzb+tusQw45xO29997upZdeGrKdgT+3GHDPPfc4EXHPPvus93iGvyeOPvpoN3v2bLdo0SL3yiuvuAULFrh0Ou2+853vNL1vvHV96lOfcosXL3avvPKKe+ihh9zJJ5/sWltb3cqVK11vb6+79NJL3YMPPuhWrlzpHnvsMXfOOee4VCo15G+bh/P1y8cdd5y75pprhiyrVqtu2rRp7jOf+Yx3OyPdgy+99JL74he/6JYsWeJWrFjhbrvtNjdr1iy3//77D96DjYyTFi5c6K6//nq3bNky99JLL7nvf//7rq2tbchvrxctWuSy2ay79NJLh2xj48aNg5955ZVXXDabdRdffLF79tln3Q033OASicSQP+0oFouDY8MpU6a4T3/6027p0qVu+fLlg5955JFHXDwed1/5ylfc8uXL3Y033uiy2az78Y9/PPiZjRs3uqVLl7rbbrvNiYi76aab3NKlSwe/F8/n29ell17q7rvvPrdixQr31FNPucsuu8xFo1F31113NfTecM65888/302dOtXdc8897vHHH3fHHXec23fffQfvjYcffthdc801bunSpW7lypXu97//vTvyyCPdLrvsMqTGyPD3xhVXXOHa29vdLbfc4pYtW+ZOP/10N2XKlCH7RnOYeDdo0aJFTkTq/jvzzDMHP3PDDTe4mTNnunQ67fbdd9+6f2o13PCX2YIFC7z7GP7zERFxCxYsULc7fOK9evVqd9JJJ7mOjg6XSCTc1KlT3Yc+9CH3/PPPN3MKgEHafTr8vvze977nMpmM27JlS8PbDTLx3nbfA5/x/bdo0aIh61166aVu6tSpDf1TRcAy0jORz+fdnDlz3MSJE10ikXDTpk1zZ555plu1atXgNrT3jIi4FStWDNnf6aefPvinTNrxbPs8rl271p111lmus7PTpdNpt/vuu7urrrpq8O/7mtk33rpOO+00N2XKFJdIJFxnZ6d73/veN/i3ooVCwb33ve91nZ2dLplMuilTprh58+bVFVcbztcvT58+3V1++eVDlt15551ORNwLL7zg3c5I9+CqVavcO97xDjdu3DiXTCbdLrvs4i666KIhk+FGxkm/+93v3H777edaWlpcNpt1e+21l/vWt741JHbrzDPP9G5j+D+nX7x4sdt///1dMpl0M2bMqPshsva+Gb6d3/zmN26vvfZyqVTKzZo1y11//fVD2rXvNXCOeT7fvs4++2w3ffp0l0wm3cSJE9073/lOd9dddznnGntvOLf12b7gggvcuHHjXCaTcSeffPKQzzz11FPu2GOPdePGjXOpVMrNmDHDnX/++e71118fsp3h741areYuv/xyN3nyZJdKpdw73vEOt2zZsvBOxt+AiHN/+rcGAAAAAABg1JHjDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAiJt4AAAAAAISIiTcAAAAAACFi4g0AAAAAQIiYeAMAAAAAECIm3gAAAAAAhIiJNwAAAAAAIWLiDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAiJt4AAAAAAISIiTcAAAAAACFi4g0AAAAAQIiYeAMAAAAAECIm3gAAAAAAhIiJNwAAAAAAIWLiDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAiJt4AAAAAAISIiTcAAAAAACFi4g0AAAAAQIiYeAMAAAAAECIm3gAAAAAAhIiJNwAAAAAAIWLiDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAiJt4AAAAAAISIiTcAAAAAACFi4g0AAAAAQIiYeAMAAAAAECIm3gAAAAAAhIiJNwAAAAAAIWLiDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAi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efPmET/761//2kUiEVcqlRo+vtG4T319+e233+6i0ahbvXr14LKf/vSnLpVKDb4nvvOd77j29nbX398/+Jmvfe1rrrOz09VqNeecc5dccombNWvWkP2dd9557tBDDx38/x/4wAfciSeeOOQzc+fOdR/84AcH///f/d3fufPPP3/IZ2bNmuU++9nPOucaG4Nt2bLFJRIJd9NNNw1+ZvXq1S4ajbo77rjDOdfYXKuRc+Pzrne9y330ox9V20fT2/o33sMN/PPwcePGedtLpZJcf/310t7ebv5Gt6urS9ra2iQej4vI1p8Itbe3yyGHHDL4mUMPPVTa29vlgQce8G6jVqvJbbfdJrvttpvMnTtXOjo65JBDDqn7ZzNHHnmk/OxnP5NNmzZJrVaTm266SYrFohxzzDEisvW30MlkUqLR/38pM5mMiIjcf//9IiKy++67y4QJE+SGG26QUqkkhUJBbrjhBpk9e7ZMnz7de3w/+MEPZLfddpOjjjpKPQ9AUI08a4899pg88cQTdf+65I033pBzzz1XfvSjH0k2mx1xXytWrJB169bJnDlzBpelUik5+uij1ecTCIPvHXTkkUfKwoULZfXq1eKck0WLFsmLL74oc+fOFZGtfXwkEpFUKjW4Tjqdlmg0OtjHD7dw4ULZsGHDkH/5BLwVLVy4UA466CB5//vfLx0dHbL//vvL97//ffXz1rvjxhtvlAkTJsjs2bPl05/+NP+i6W9Mo+PqZm3atEluvPFGOfzwwyWRSDS0zmjdp76+/MEHH5S99tpryL/4mzt3rhSLxcE/0XjwwQfl6KOPHvLemDt3rqxZs0ZWrlw5+Jltx0UDn3n00UcH/zWs9pmBsVOpVJLHHnus7jNz5swZ/EwjY7DHHntMyuXykM90dnbKXnvtNfiZRuZajZwbn66uLnVuONr+Zibezjn5l3/5FznyyCNlr732GtL229/+VlpaWiSdTss3v/lNufvuu2XChAne7WzcuFG+/OUvy3nnnTe4bN26ddLR0VH32Y6ODlm3bp13O+vXr5fe3l654oor5MQTT5S77rpL3vve98r73vc+uffeewc/97Of/UwqlYqMHz9eUqmUnHfeeXLrrbfKLrvsIiIixx13nKxbt07+/d//XUqlkmzevHnwn8+sXbtWRERaW1tl8eLF8uMf/1gymYy0tLTInXfeKbfffvvgDw+2VSwW5cYbb6yb8ADbq5ln7YYbbpA99thDDj/88MFlzjk566yz5Pzzzzf/Ce22Bp7BSZMmDVk+adIk9fkERpv2Dvr2t78te+65p0ydOlWSyaSceOKJ8p3vfEeOPPJIEdk6sMjlcvKZz3xG8vm89PX1yb/+679KrVYb7OOHu+GGG2Tu3Lmy4447/lm+GxDUK6+8It/97ndl1113lTvvvFPOP/98ueiii+SHP/zhkM+N9O748Ic/LD/96U9l8eLF8vnPf15uvvlmed/73vfn/jr4C2p0XN2oz3zmM5LL5WT8+PGyatWqwT//sYz2ferry9etW1c3nhk7dqwkk8nBMY3vMwP/f6TPVCoV2bBhg/mZgW1s2LBBqtWq+ZlGxmDr1q2TZDIpY8eONT8z0lyrkXMz3C9/+UtZsmSJfPSjH/W2j7a/mYn3BRdcIE899ZT89Kc/rWs79thj5YknnpAHHnhATjzxRPnABz4g69evr/tcd3e3vPvd75Y999xTLr/88iFtkUik7vPOOe9yERn827xTTz1VLr74Ytlvv/3ks5/9rJx88slDiht87nOfk82bN8s999wjjz76qPzLv/yLvP/975dly5aJiMjs2bPlf/7nf+Sqq66SbDYrkydPlp133lkmTZoksVhMREQKhYKcffbZcsQRR8hDDz0kf/zjH2X27Nnyrne9SwqFQt2x3XLLLdLT0yNnnHGGdjqBQBp91gqFgvzkJz+p++HPNddcI93d3XLppZc2ve/hz6L1fAKjTXsHffvb35aHHnpIFi5cKI899phcddVV8o//+I9yzz33iIjIxIkT5Re/+IX85je/kZaWFmlvb5euri454IADBvv4bb3++uty55138oNT/FWo1WpywAEHyFe/+lXZf//95bzzzpNzzz23rsDgSO+Oc889V44//njZa6+95IMf/KD88pe/lHvuuUcef/zxP/dXwl9Io+PqRv3rv/6rLF26VO666y6JxWJyxhln1BUnG24071OrL29kzuEb8wxfHvQzw5eN1meGG+k7Bf3MgMWLF8tZZ50l3//+92X27NnmsYyWv4mJ94UXXigLFy6URYsWydSpU+vac7mczJw5Uw499FC54YYbJB6Pyw033DDkMz09PXLiiSdKS0uL3HrrrUP+ucnkyZOHVJgd8Oabb9b95GXAhAkTJB6Py5577jlk+R577DFYkODll1+Wa6+9Vv7rv/5L3vnOd8q+++4rl19+uRx00EHyn//5n4PrfOhDH5J169bJ6tWrZePGjfKFL3xB3nzzTdlpp51EROQnP/mJrFy5UhYsWCAHH3ywHHroofKTn/xEVqxY4f0J3g9+8AM5+eSTZfLkydopBQJp5FkT2foTyHw+X/fDn9///vfy0EMPSSqVkng8LjNnzhQRkYMOOkjOPPNM7z4H7uPhP+1cv369+nwCo0l7BxUKBbnsssvk6quvllNOOUX22WcfueCCC+S0006TK6+8cvBzc+bMkZdfflnWr18vGzZskB/96EeyevXqwT5+WwsWLJDx48fLvHnz/izfDdgeU6ZMMcdBAxp9dww44IADJJFIyPLly0M5brz1NDKubnZ7u+22m5xwwgly0003ye233y4PPfSQuc5o3qdaXz558uS68czmzZulXC4Pjml8nxn4AcBIn4nH4zJ+/HjzMwPbmDBhgsRiMfMzjYzBJk+ePPivdq3PjDTXauTcDLj33nvllFNOkauvvvrP+ovGt/XE2zknF1xwgdxyyy3y+9//3jtI0dYrFouD/7+7u1vmzJkjyWRSFi5cOKQ6oojIYYcdJl1dXfLII48MLnv44Yelq6tryD+T3VYymZSDDz64LlrmxRdfHPy763w+LyIy5O+3RURisdjgT/a2NWnSJGlpaZGf/exnkk6n5YQTThjcTjQaHfLTnoH/P3w7K1askEWLFvHbEvxZDH/WBtxwww0yb948mThx4pDl3/72t+XJJ5+UJ554Qp544gm5/fbbRWTrn2R85Stf8e5jp512ksmTJ8vdd989uKxUKsm9996rPp/AaBjpHVQul6VcLjfcx0+YMEHGjBkjv//972X9+vV1AzLnnCxYsEDOOOOMhv8WEfhLOuKII8xxkEZ7dwx45plnpFwuy5QpU0blOPHW18i4OqiB3wRb95y2XpD71OrLDzvsMHn66aeH/KnRXXfdJalUSg488MDBz9x3331DYrTuuusu6ezslBkzZgx+Zttx0cBnDjrooMF9ap8ZGDslk0k58MAD6z5z9913D36mkTHYgQceKIlEYshn1q5dK08//fTgZxqZazVybkS2/qb73e9+t1xxxRXy8Y9/XP6s/iwl3P5CPvGJT7j29na3ePFit3bt2sH/8vm8c8653t5ed+mll7oHH3zQrVy50j322GPunHPOcalUyj399NPOOee6u7vdIYcc4vbee2/30ksvDdlOpVIZ3NeJJ57o9tlnH/fggw+6Bx980O29997u5JNPHnI8u+++u7vlllsG//8tt9ziEomEu/76693y5cvdNddc42KxmPvDH/7gnNtazXDmzJnuqKOOcg8//LB76aWX3JVXXukikYi77bbbBrdzzTXXuMcee8y98MIL7tprr3WZTMb9x3/8x2D7c88951KplPvEJz7hnn32Wff000+7j3zkI669vd2tWbNmyDF+7nOfc52dnUO+27aWLl3qli5d6g488ED3oQ99yC1dutQ988wzQS4P3mZ6enoG7w8RcVdffbVbunSpe/XVVxt61gYsX77cRSIR97vf/W7EfWrVmIc/a1dccYVrb293t9xyi1u2bJk7/fTT3ZQpU1x3d/eofHfAZ6R3kHNbq9zOnj3bLVq0yL3yyituwYIFLp1Ou+985zuDn/mv//ov9+CDD7qXXnrJ/ehHP3Ljxo1z//Iv/1K3v3vuuceJiHv22We9xzP8udi4caNbunSpu+2225yIuJtuusktXbrUrV27dhTPAqB75JFHXDwed1/5ylfc8uXL3Y033uiy2az78Y9/7JxrbJz20ksvuS9+8YtuyZIlbsWKFe62225zs2bNcvvvv/+Qscxxxx3nrrnmmsH/b72z8NY00jUbaVztnHNr1651S5cudd///vcH03uWLl3qNm7c6Jxz7uGHH3bXXHONW7p0qVu5cqX7/e9/74488ki3yy67DKkSvm1/Opr3qXN2X16pVNxee+3l3vnOd7rHH3/c3XPPPW7q1KnuggsuGPzMli1b3KRJk9zpp5/uli1b5m655RbX1tbmrrzyysHPvPLKKy6bzbqLL77YPfvss+6GG25wiUTC/fKXvxz8zB//+EcXi8XcFVdc4Z577jl3xRVXuHg8PqSy+E033eQSiYS74YYb3LPPPus++clPulwu51auXDn4mUbGYOeff76bOnWqu+eee9zjjz/ujjvuOLfvvvs2Nddq5NwsWrTIZbNZd+mllw55Lw9c/7C9rSfeIuL9b8GCBc455wqFgnvve9/rOjs7XTKZdFOmTHHz5s1zjzzyyOA2BuIGfP+tWLFi8HMbN250H/7wh11ra6trbW11H/7wh+siCrbd94AbbrjBzZw506XTabfvvvu6X/3qV0PaX3zxRfe+973PdXR0uGw26/bZZ5+6eLH58+e7cePGuWQy6W13zrm77rrLHXHEEa69vd2NHTvWHXfcce7BBx8c8plqteqmTp3qLrvssqbO6fTp09XP42+H9qyceeaZDT1rAy699FI3derUIRF5Gm3iPfxZq9Vq7vLLL3eTJ092qVTKveMd73DLli3b3q8MmEZ6Bzm3dRB41llnuc7OTpdOp93uu+/urrrqqsHIF+e2Ri5NmjTJJRIJt+uuu9a1Dzj99NPd4Ycfbh7PtvtesGCB9/guv/zy0fj6QEN+85vfuL322sulUik3a9Ysd/311w+2NfLuWLVqlXvHO94xOA7aZZdd3EUXXVQ3kJ4+ffqQe9t6Z+GtqZFrNtK4+vLLLzf75aeeesode+yxbty4cS6VSrkZM2a4888/373++utDttPsfKLR+9S5kfvyV1991b373e92mUzGjRs3zl1wwQVDfigw8D2OOuool0ql3OTJk90XvvCFuvfG4sWL3f777++SyaSbMWOG++53v1u3r1/84hdu9913d4lEws2aNcvdfPPNdZ/5z//8Tzd9+nSXTCbdAQccUBfb3MgYrFAouAsuuMCNGzfOZTIZd/LJJw+JQXausbnWSOfmzDPP9F7/o48+Wj3foyni3AiVAgAAAAAAQGBv67/xBgAAAADgL42JNwAAAAAAIWLiDQAAAABAiJh4AwAAAAAQIibeAAAAAACEiIk3AAAAAAAhYuINAAAAAECImHgDAAAAABAiJt4AAAAAAISIiTcAAAAAACFi4g0AAAAAQIj+HxSi8uxmZbjLAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1000x600 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(nrows=2, ncols=5, figsize=(10,6))\n",
"\n",
"offset = 10\n",
"for i in range(5):\n",
" # train\n",
" ax[0,i].imshow(train_images[i+offset].reshape(img_rows,img_cols), cmap=plt.cm.Blues)\n",
" ax[0,i].set_xlabel(ytrain[i], fontsize=10)\n",
" ax[0,i].set_xticks([]); ax[0,i].set_yticks([]); ax[0,i].grid(False)\n",
" # val\n",
" ax[1,i].imshow(test_images[i+offset].reshape(img_rows,img_cols), cmap=plt.cm.Blues)\n",
" ax[1,i].set_xlabel(ytest[i], fontsize=10)\n",
" ax[1,i].set_xticks([]); ax[1,i].set_yticks([]); ax[1,i].grid(False)\n",
" # test\n",
" # ax[2,i].imshow(test_images[i].reshape(28,28), cmap=plt.cm.binary)\n",
" # ax[2,i].set_xlabel(np.argmax(test_labels[i]), fontsize=18)\n",
" # ax[2,i].set_xticks([]); ax[2,i].set_yticks([]); ax[2,i].grid(False)\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "cd625c24",
"metadata": {},
"source": [
"Tunable model:\n",
"For at ændre range på tuning variable skal du ændre i hp.Int() eller hp.Float()\n",
"ex: filters = hp.Int(f'filters_{i}', 32, 128, step=32)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "0dfee8c6",
"metadata": {},
"outputs": [],
"source": [
"def build_model(hp):\n",
" IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS = 27, 27, 1\n",
" NUM_SCALAR_FEATURES = 7\n",
"\n",
" image_input = layers.Input(shape=(IMAGE_HEIGHT, IMAGE_WIDTH, IMAGE_CHANNELS), name='image_input')\n",
" x = image_input\n",
"\n",
" # Tune number of conv layers: 1 to 3\n",
" for i in range(hp.Int('num_conv_layers', 1, 3)):\n",
" filters = hp.Int(f'filters_{i}', 32, 128, step=32)\n",
" x = layers.Conv2D(filters, (3, 3), activation='relu', padding='same')(x)\n",
" x = layers.MaxPooling2D((2, 2))(x)\n",
"\n",
" x = layers.Flatten()(x)\n",
"\n",
" # Scalar branch\n",
" scalar_input = layers.Input(shape=(NUM_SCALAR_FEATURES,), name='scalar_input')\n",
" y = scalar_input # you could also add dense layers here\n",
"\n",
" # Merge\n",
" z = layers.concatenate([x, y])\n",
"\n",
" # Tune number of dense layers: 1 to 3\n",
" for i in range(hp.Int('num_dense_layers', 1, 3)):\n",
" units = hp.Int(f'dense_units_{i}', 64, 256, step=64)\n",
" z = layers.Dense(units, activation='relu')(z)\n",
" z = layers.Dropout(hp.Float(f'dropout_{i}', 0.3, 0.7, step=0.1))(z)\n",
"\n",
" output = layers.Dense(1, name='output')(z)\n",
"\n",
" model = keras.Model(inputs=[image_input, scalar_input], outputs=output)\n",
"\n",
" model.compile(\n",
" optimizer='adam',\n",
" loss='mse',\n",
" metrics=['mape']\n",
" )\n",
"\n",
" return model\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "aaf313fd",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Reloading Tuner from C:/Users/marku/Desktop/APPML_tuning_outputs\\ice_thickness_cnn\\tuner0.json\n"
]
}
],
"source": [
"tuner = kt.RandomSearch(\n",
" build_model,\n",
" objective='val_mape',\n",
" max_trials=5,\n",
" executions_per_trial=1,\n",
" directory='C:/Users/marku/Desktop/APPML_tuning_outputs', #skift directory\n",
" project_name='ice_thickness_cnn'\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "bd3f3fb6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Trial 3 Complete [00h 00m 53s]\n",
"val_mape: 130.4561004638672\n",
"\n",
"Best val_mape So Far: 99.97557830810547\n",
"Total elapsed time: 12h 47m 11s\n",
"\n",
"Search: Running Trial #4\n",
"\n",
"Value |Best Value So Far |Hyperparameter\n",
"2 |2 |num_conv_layers\n",
"64 |64 |filters_0\n",
"3 |2 |num_dense_layers\n",
"64 |128 |dense_units_0\n",
"0.4 |0.4 |dropout_0\n",
"64 |32 |filters_1\n",
"128 |64 |dense_units_1\n",
"0.4 |0.3 |dropout_1\n",
"96 |None |filters_2\n",
"256 |None |dense_units_2\n",
"0.5 |None |dropout_2\n",
"\n",
"Epoch 1/2\n",
"\u001b[1m250/250\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m64s\u001b[0m 242ms/step - loss: 110.4521 - mape: 1730.5282 - val_loss: 0.9863 - val_mape: 100.0130\n",
"Epoch 2/2\n",
"\u001b[1m105/250\u001b[0m \u001b[32m━━━━━━━━\u001b[0m\u001b[37m━━━━━━━━━━━━\u001b[0m \u001b[1m33s\u001b[0m 231ms/step - loss: 1.0061 - mape: 100.9180"
]
},
{
"ename": "KeyboardInterrupt",
"evalue": "",
"output_type": "error",
"traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mKeyboardInterrupt\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[11]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m tuner.search(\n\u001b[32m 2\u001b[39m {\u001b[33m'\u001b[39m\u001b[33mimage_input\u001b[39m\u001b[33m'\u001b[39m: train_images, \u001b[33m'\u001b[39m\u001b[33mscalar_input\u001b[39m\u001b[33m'\u001b[39m: train_feats},\n\u001b[32m 3\u001b[39m ytrain_std,\n\u001b[32m 4\u001b[39m validation_data=({\u001b[33m'\u001b[39m\u001b[33mimage_input\u001b[39m\u001b[33m'\u001b[39m: test_images, \u001b[33m'\u001b[39m\u001b[33mscalar_input\u001b[39m\u001b[33m'\u001b[39m: test_feats}, ytest_std),\n\u001b[32m 5\u001b[39m epochs=\u001b[32m2\u001b[39m,\n\u001b[32m 6\u001b[39m batch_size=\u001b[32m320\u001b[39m\n\u001b[32m 7\u001b[39m )\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\base_tuner.py:234\u001b[39m, in \u001b[36mBaseTuner.search\u001b[39m\u001b[34m(self, *fit_args, **fit_kwargs)\u001b[39m\n\u001b[32m 231\u001b[39m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[32m 233\u001b[39m \u001b[38;5;28mself\u001b[39m.on_trial_begin(trial)\n\u001b[32m--> \u001b[39m\u001b[32m234\u001b[39m \u001b[38;5;28mself\u001b[39m._try_run_and_update_trial(trial, *fit_args, **fit_kwargs)\n\u001b[32m 235\u001b[39m \u001b[38;5;28mself\u001b[39m.on_trial_end(trial)\n\u001b[32m 236\u001b[39m \u001b[38;5;28mself\u001b[39m.on_search_end()\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\base_tuner.py:274\u001b[39m, in \u001b[36mBaseTuner._try_run_and_update_trial\u001b[39m\u001b[34m(self, trial, *fit_args, **fit_kwargs)\u001b[39m\n\u001b[32m 272\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_try_run_and_update_trial\u001b[39m(\u001b[38;5;28mself\u001b[39m, trial, *fit_args, **fit_kwargs):\n\u001b[32m 273\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m274\u001b[39m \u001b[38;5;28mself\u001b[39m._run_and_update_trial(trial, *fit_args, **fit_kwargs)\n\u001b[32m 275\u001b[39m trial.status = trial_module.TrialStatus.COMPLETED\n\u001b[32m 276\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\base_tuner.py:239\u001b[39m, in \u001b[36mBaseTuner._run_and_update_trial\u001b[39m\u001b[34m(self, trial, *fit_args, **fit_kwargs)\u001b[39m\n\u001b[32m 238\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34m_run_and_update_trial\u001b[39m(\u001b[38;5;28mself\u001b[39m, trial, *fit_args, **fit_kwargs):\n\u001b[32m--> \u001b[39m\u001b[32m239\u001b[39m results = \u001b[38;5;28mself\u001b[39m.run_trial(trial, *fit_args, **fit_kwargs)\n\u001b[32m 240\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.oracle.get_trial(trial.trial_id).metrics.exists(\n\u001b[32m 241\u001b[39m \u001b[38;5;28mself\u001b[39m.oracle.objective.name\n\u001b[32m 242\u001b[39m ):\n\u001b[32m 243\u001b[39m \u001b[38;5;66;03m# The oracle is updated by calling `self.oracle.update_trial()` in\u001b[39;00m\n\u001b[32m 244\u001b[39m \u001b[38;5;66;03m# `Tuner.run_trial()`. For backward compatibility, we support this\u001b[39;00m\n\u001b[32m 245\u001b[39m \u001b[38;5;66;03m# use case. No further action needed in this case.\u001b[39;00m\n\u001b[32m 246\u001b[39m warnings.warn(\n\u001b[32m 247\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mThe use case of calling \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 248\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m`self.oracle.update_trial(trial_id, metrics)` \u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m (...)\u001b[39m\u001b[32m 254\u001b[39m stacklevel=\u001b[32m2\u001b[39m,\n\u001b[32m 255\u001b[39m )\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\tuner.py:314\u001b[39m, in \u001b[36mTuner.run_trial\u001b[39m\u001b[34m(self, trial, *args, **kwargs)\u001b[39m\n\u001b[32m 312\u001b[39m callbacks.append(model_checkpoint)\n\u001b[32m 313\u001b[39m copied_kwargs[\u001b[33m\"\u001b[39m\u001b[33mcallbacks\u001b[39m\u001b[33m\"\u001b[39m] = callbacks\n\u001b[32m--> \u001b[39m\u001b[32m314\u001b[39m obj_value = \u001b[38;5;28mself\u001b[39m._build_and_fit_model(trial, *args, **copied_kwargs)\n\u001b[32m 316\u001b[39m histories.append(obj_value)\n\u001b[32m 317\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m histories\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\tuner.py:233\u001b[39m, in \u001b[36mTuner._build_and_fit_model\u001b[39m\u001b[34m(self, trial, *args, **kwargs)\u001b[39m\n\u001b[32m 231\u001b[39m hp = trial.hyperparameters\n\u001b[32m 232\u001b[39m model = \u001b[38;5;28mself\u001b[39m._try_build(hp)\n\u001b[32m--> \u001b[39m\u001b[32m233\u001b[39m results = \u001b[38;5;28mself\u001b[39m.hypermodel.fit(hp, model, *args, **kwargs)\n\u001b[32m 235\u001b[39m \u001b[38;5;66;03m# Save the build config for model loading later.\u001b[39;00m\n\u001b[32m 236\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m backend.config.multi_backend():\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras_tuner\\src\\engine\\hypermodel.py:149\u001b[39m, in \u001b[36mHyperModel.fit\u001b[39m\u001b[34m(self, hp, model, *args, **kwargs)\u001b[39m\n\u001b[32m 125\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mfit\u001b[39m(\u001b[38;5;28mself\u001b[39m, hp, model, *args, **kwargs):\n\u001b[32m 126\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Train the model.\u001b[39;00m\n\u001b[32m 127\u001b[39m \n\u001b[32m 128\u001b[39m \u001b[33;03m Args:\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 147\u001b[39m \u001b[33;03m If return a float, it should be the `objective` value.\u001b[39;00m\n\u001b[32m 148\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m149\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m model.fit(*args, **kwargs)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras\\src\\utils\\traceback_utils.py:117\u001b[39m, in \u001b[36mfilter_traceback.<locals>.error_handler\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 115\u001b[39m filtered_tb = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 116\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m117\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m fn(*args, **kwargs)\n\u001b[32m 118\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 119\u001b[39m filtered_tb = _process_traceback_frames(e.__traceback__)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras\\src\\backend\\tensorflow\\trainer.py:371\u001b[39m, in \u001b[36mTensorFlowTrainer.fit\u001b[39m\u001b[34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq)\u001b[39m\n\u001b[32m 369\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m step, iterator \u001b[38;5;129;01min\u001b[39;00m epoch_iterator:\n\u001b[32m 370\u001b[39m callbacks.on_train_batch_begin(step)\n\u001b[32m--> \u001b[39m\u001b[32m371\u001b[39m logs = \u001b[38;5;28mself\u001b[39m.train_function(iterator)\n\u001b[32m 372\u001b[39m callbacks.on_train_batch_end(step, logs)\n\u001b[32m 373\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.stop_training:\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras\\src\\backend\\tensorflow\\trainer.py:219\u001b[39m, in \u001b[36mTensorFlowTrainer._make_function.<locals>.function\u001b[39m\u001b[34m(iterator)\u001b[39m\n\u001b[32m 215\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mfunction\u001b[39m(iterator):\n\u001b[32m 216\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\n\u001b[32m 217\u001b[39m iterator, (tf.data.Iterator, tf.distribute.DistributedIterator)\n\u001b[32m 218\u001b[39m ):\n\u001b[32m--> \u001b[39m\u001b[32m219\u001b[39m opt_outputs = multi_step_on_iterator(iterator)\n\u001b[32m 220\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m opt_outputs.has_value():\n\u001b[32m 221\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\util\\traceback_utils.py:150\u001b[39m, in \u001b[36mfilter_traceback.<locals>.error_handler\u001b[39m\u001b[34m(*args, **kwargs)\u001b[39m\n\u001b[32m 148\u001b[39m filtered_tb = \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[32m 149\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m--> \u001b[39m\u001b[32m150\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m fn(*args, **kwargs)\n\u001b[32m 151\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 152\u001b[39m filtered_tb = _process_traceback_frames(e.__traceback__)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:833\u001b[39m, in \u001b[36mFunction.__call__\u001b[39m\u001b[34m(self, *args, **kwds)\u001b[39m\n\u001b[32m 830\u001b[39m compiler = \u001b[33m\"\u001b[39m\u001b[33mxla\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._jit_compile \u001b[38;5;28;01melse\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33mnonXla\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 832\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m OptionalXlaContext(\u001b[38;5;28mself\u001b[39m._jit_compile):\n\u001b[32m--> \u001b[39m\u001b[32m833\u001b[39m result = \u001b[38;5;28mself\u001b[39m._call(*args, **kwds)\n\u001b[32m 835\u001b[39m new_tracing_count = \u001b[38;5;28mself\u001b[39m.experimental_get_tracing_count()\n\u001b[32m 836\u001b[39m without_tracing = (tracing_count == new_tracing_count)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:878\u001b[39m, in \u001b[36mFunction._call\u001b[39m\u001b[34m(self, *args, **kwds)\u001b[39m\n\u001b[32m 875\u001b[39m \u001b[38;5;28mself\u001b[39m._lock.release()\n\u001b[32m 876\u001b[39m \u001b[38;5;66;03m# In this case we have not created variables on the first call. So we can\u001b[39;00m\n\u001b[32m 877\u001b[39m \u001b[38;5;66;03m# run the first trace but we should fail if variables are created.\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m878\u001b[39m results = tracing_compilation.call_function(\n\u001b[32m 879\u001b[39m args, kwds, \u001b[38;5;28mself\u001b[39m._variable_creation_config\n\u001b[32m 880\u001b[39m )\n\u001b[32m 881\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._created_variables:\n\u001b[32m 882\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[33m\"\u001b[39m\u001b[33mCreating variables on a non-first call to a function\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 883\u001b[39m \u001b[33m\"\u001b[39m\u001b[33m decorated with tf.function.\u001b[39m\u001b[33m\"\u001b[39m)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\tracing_compilation.py:139\u001b[39m, in \u001b[36mcall_function\u001b[39m\u001b[34m(args, kwargs, tracing_options)\u001b[39m\n\u001b[32m 137\u001b[39m bound_args = function.function_type.bind(*args, **kwargs)\n\u001b[32m 138\u001b[39m flat_inputs = function.function_type.unpack_inputs(bound_args)\n\u001b[32m--> \u001b[39m\u001b[32m139\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m function._call_flat( \u001b[38;5;66;03m# pylint: disable=protected-access\u001b[39;00m\n\u001b[32m 140\u001b[39m flat_inputs, captured_inputs=function.captured_inputs\n\u001b[32m 141\u001b[39m )\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\concrete_function.py:1322\u001b[39m, in \u001b[36mConcreteFunction._call_flat\u001b[39m\u001b[34m(self, tensor_inputs, captured_inputs)\u001b[39m\n\u001b[32m 1318\u001b[39m possible_gradient_type = gradients_util.PossibleTapeGradientTypes(args)\n\u001b[32m 1319\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m (possible_gradient_type == gradients_util.POSSIBLE_GRADIENT_TYPES_NONE\n\u001b[32m 1320\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m executing_eagerly):\n\u001b[32m 1321\u001b[39m \u001b[38;5;66;03m# No tape is watching; skip to running the function.\u001b[39;00m\n\u001b[32m-> \u001b[39m\u001b[32m1322\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._inference_function.call_preflattened(args)\n\u001b[32m 1323\u001b[39m forward_backward = \u001b[38;5;28mself\u001b[39m._select_forward_and_backward_functions(\n\u001b[32m 1324\u001b[39m args,\n\u001b[32m 1325\u001b[39m possible_gradient_type,\n\u001b[32m 1326\u001b[39m executing_eagerly)\n\u001b[32m 1327\u001b[39m forward_function, args_with_tangents = forward_backward.forward()\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:216\u001b[39m, in \u001b[36mAtomicFunction.call_preflattened\u001b[39m\u001b[34m(self, args)\u001b[39m\n\u001b[32m 214\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mcall_preflattened\u001b[39m(\u001b[38;5;28mself\u001b[39m, args: Sequence[core.Tensor]) -> Any:\n\u001b[32m 215\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Calls with flattened tensor inputs and returns the structured output.\"\"\"\u001b[39;00m\n\u001b[32m--> \u001b[39m\u001b[32m216\u001b[39m flat_outputs = \u001b[38;5;28mself\u001b[39m.call_flat(*args)\n\u001b[32m 217\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m.function_type.pack_output(flat_outputs)\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:251\u001b[39m, in \u001b[36mAtomicFunction.call_flat\u001b[39m\u001b[34m(self, *args)\u001b[39m\n\u001b[32m 249\u001b[39m \u001b[38;5;28;01mwith\u001b[39;00m record.stop_recording():\n\u001b[32m 250\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m._bound_context.executing_eagerly():\n\u001b[32m--> \u001b[39m\u001b[32m251\u001b[39m outputs = \u001b[38;5;28mself\u001b[39m._bound_context.call_function(\n\u001b[32m 252\u001b[39m \u001b[38;5;28mself\u001b[39m.name,\n\u001b[32m 253\u001b[39m \u001b[38;5;28mlist\u001b[39m(args),\n\u001b[32m 254\u001b[39m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m.function_type.flat_outputs),\n\u001b[32m 255\u001b[39m )\n\u001b[32m 256\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 257\u001b[39m outputs = make_call_op_in_graph(\n\u001b[32m 258\u001b[39m \u001b[38;5;28mself\u001b[39m,\n\u001b[32m 259\u001b[39m \u001b[38;5;28mlist\u001b[39m(args),\n\u001b[32m 260\u001b[39m \u001b[38;5;28mself\u001b[39m._bound_context.function_call_options.as_attrs(),\n\u001b[32m 261\u001b[39m )\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\context.py:1688\u001b[39m, in \u001b[36mContext.call_function\u001b[39m\u001b[34m(self, name, tensor_inputs, num_outputs)\u001b[39m\n\u001b[32m 1686\u001b[39m cancellation_context = cancellation.context()\n\u001b[32m 1687\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m cancellation_context \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m1688\u001b[39m outputs = execute.execute(\n\u001b[32m 1689\u001b[39m name.decode(\u001b[33m\"\u001b[39m\u001b[33mutf-8\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 1690\u001b[39m num_outputs=num_outputs,\n\u001b[32m 1691\u001b[39m inputs=tensor_inputs,\n\u001b[32m 1692\u001b[39m attrs=attrs,\n\u001b[32m 1693\u001b[39m ctx=\u001b[38;5;28mself\u001b[39m,\n\u001b[32m 1694\u001b[39m )\n\u001b[32m 1695\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 1696\u001b[39m outputs = execute.execute_with_cancellation(\n\u001b[32m 1697\u001b[39m name.decode(\u001b[33m\"\u001b[39m\u001b[33mutf-8\u001b[39m\u001b[33m\"\u001b[39m),\n\u001b[32m 1698\u001b[39m num_outputs=num_outputs,\n\u001b[32m (...)\u001b[39m\u001b[32m 1702\u001b[39m cancellation_manager=cancellation_context,\n\u001b[32m 1703\u001b[39m )\n",
"\u001b[36mFile \u001b[39m\u001b[32mc:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\tensorflow\\python\\eager\\execute.py:53\u001b[39m, in \u001b[36mquick_execute\u001b[39m\u001b[34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[39m\n\u001b[32m 51\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m 52\u001b[39m ctx.ensure_initialized()\n\u001b[32m---> \u001b[39m\u001b[32m53\u001b[39m tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,\n\u001b[32m 54\u001b[39m inputs, attrs, num_outputs)\n\u001b[32m 55\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m core._NotOkStatusException \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[32m 56\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
"\u001b[31mKeyboardInterrupt\u001b[39m: "
]
}
],
"source": [
"tuner.search(\n",
" {'image_input': train_images, 'scalar_input': train_feats},\n",
" ytrain_std,\n",
" validation_data=({'image_input': test_images, 'scalar_input': test_feats}, ytest_std),\n",
" epochs=2,\n",
" batch_size=320\n",
")\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "3fedd52d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From c:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras\\src\\backend\\common\\global_state.py:82: The name tf.reset_default_graph is deprecated. Please use tf.compat.v1.reset_default_graph instead.\n",
"\n",
"{'num_conv_layers': 2, 'filters_0': 64, 'num_dense_layers': 2, 'dense_units_0': 128, 'dropout_0': 0.4, 'filters_1': 32, 'dense_units_1': 64, 'dropout_1': 0.3}\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\marku\\anaconda3\\envs\\appml25\\Lib\\site-packages\\keras\\src\\saving\\saving_lib.py:757: UserWarning: Skipping variable loading for optimizer 'adam', because it has 2 variables whereas the saved optimizer has 22 variables. \n",
" saveable.load_own_variables(weights_store.get(inner_path))\n"
]
}
],
"source": [
"best_model = tuner.get_best_models(num_models=1)[0]\n",
"best_hps = tuner.get_best_hyperparameters(num_trials=1)[0]\n",
"\n",
"print(best_hps.values)\n"
]
},
{
"cell_type": "markdown",
"id": "f944882a",
"metadata": {},
"source": [
"Tunable model end."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "fbb15ccc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 image_input <class 'keras.src.layers.core.input_layer.InputLayer'>\n",
"1 conv2d <class 'keras.src.layers.convolutional.conv2d.Conv2D'>\n",
"2 max_pooling2d <class 'keras.src.layers.pooling.max_pooling2d.MaxPooling2D'>\n",
"3 conv2d_1 <class 'keras.src.layers.convolutional.conv2d.Conv2D'>\n",
"4 max_pooling2d_1 <class 'keras.src.layers.pooling.max_pooling2d.MaxPooling2D'>\n",
"5 conv2d_2 <class 'keras.src.layers.convolutional.conv2d.Conv2D'>\n",
"6 max_pooling2d_2 <class 'keras.src.layers.pooling.max_pooling2d.MaxPooling2D'>\n",
"7 flatten <class 'keras.src.layers.reshaping.flatten.Flatten'>\n",
"8 scalar_input <class 'keras.src.layers.core.input_layer.InputLayer'>\n",
"9 concatenate <class 'keras.src.layers.merging.concatenate.Concatenate'>\n",
"10 dense <class 'keras.src.layers.core.dense.Dense'>\n",
"11 dropout <class 'keras.src.layers.regularization.dropout.Dropout'>\n",
"12 dense_1 <class 'keras.src.layers.core.dense.Dense'>\n",
"13 dropout_1 <class 'keras.src.layers.regularization.dropout.Dropout'>\n",
"14 output <class 'keras.src.layers.core.dense.Dense'>\n"
]
}
],
"source": [
"#print layer index to input in the layer views. (conv2d)\n",
"for i, layer in enumerate(model.layers):\n",
" print(i, layer.name, type(layer))\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "99879fe3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1st convolution layer:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAAGVCAYAAACW++xIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAD3pJREFUeJzt279rXfUfx/HPTZMY29y4iEhIiiA4VHB1Fx11UBFFqLgIuvgHdBCrIKjgkKFrB/s36Cb+gFI6OLlIhUrCHVpsIbf5Zey93yl+v6At57T3dT49/T4e8+F83k3fvSfPnHQwnU6nBQAAYMbmag8AAAA8nMQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACImG9y0WQyKaPRqAyHwzIYDNIz0RPT6bSMx+Oyurpa5uZy3Wr/+Ddd7V8pdpB/sn/U5hlMTW32r1FsjEajsr6+PpPhePhsbm6WtbW12P3tH3eT3r9S7CB3Zv+ozTOYmprsX6PYGA6HpZRSPv7447K0tHT/k3Xk3LlztUdo5datW7VHaGUymZQbN278vR8pR/d//PHH4z9BnKWbN2/WHqGV77//vvYIrezs7JSXXnopvn+l/HcHT5482asd3Nraqj1CK3/88UftERrb3t4u6+vrne7fq6++WhYWFuLnzcqnn35ae4RWnnjiidojtNLVDh7d/6mnnurV598zzzxTe4RWvv3229oj3JMm+9coNo5emy0tLfUqNvr0j6KU/s17JP1a9ej+c3Nzvfoa9e118/Lycu0R7kkXX2c72I2VlZXaI7TW5f4tLCyUxcXF+Hmz0kWIzVIf968Uz+A76VOY91mT/evP1gAAAL0iNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACAiPk2F1++fLksLCykZpm53377rfYIrZw9e7b2CK3s7++Xzz77rLPzrl271tlZszCdTmuP0MqpU6dqj9DK7du3Oz/z6tWrnZ95P/q2g+fOnas9QmN7e3udn3lwcFAmk0nn596r0WhUe4RWDg8Pa4/Qyng87vS8n3/+uaysrHR65v344IMPao/Qyrvvvlt7hFb+/PPPcuHChUbXerMBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEfNtLr548WKZm+tPn/z++++1R2jlo48+qj3CA+2tt94qi4uLtcdo7Pz587VHaOXs2bO1R2hld3e3vPPOO52e+csvv5ThcNjpmffjhRdeqD1CK6+//nrtERqbTqedn3n69Oly4sSJzs+9V6+88krtEVrZ2tqqPcID7auvvipLS0u1x2jsySefrD1CK6dPn649Qivj8bhcuHCh0bX9KQcAAKBXxAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACAiPkmF02n01JKKZPJJDrMrI3H49oj/F842o/0/Q8PD6PnzNre3l7tEVqZm+vXzx6Ovr7p/fvfM27duhU/a5b++uuv2iO00qd/M/v7+6WUbvdvd3c3ftYs9e17hr7q6hl8tPN9cXBwUHuEVvr2PevR87DJ/g2mDa7a2toq6+vr9z8ZD6XNzc2ytrYWu7/9427S+1eKHeTO7B+1eQZTU5P9axQbk8mkjEajMhwOy2AwmNmA9Nt0Oi3j8bisrq5Gfypu//g3Xe1fKXaQf7J/1OYZTE1t9q9RbAAAALTVr1/SBgAAekNsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAAR800umkwmZTQaleFwWAaDQXomemI6nZbxeFxWV1fL3FyuW+0f/6ar/SvFDvJP9o/aPIOpqc3+NYqN0WhU1tfXZzIcD5/Nzc2ytrYWu7/9427S+1eKHeTO7B+1eQZTU5P9axQbw+GwlFLKqVOnyrFjx+5/so588cUXtUdo5e233649QiuTyaTcvHnz7/1IObr/mTNnytLSUvSsWXrkkUdqj9DKe++9V3uEVra3t8vJkyfj+1fKf3fwzTffLIuLi/HzZmVjY6P2CK089thjtUdorcv9e/bZZ3v1DO7bZ8rVq1drj9DKwcFB2djY6OwZ/N1335Xl5eXoWbM0nU5rj9DKyy+/XHuEViaTSbl+/Xqj/WsUG0evzY4dO9arD7oTJ07UHqGV9Kv4lPRr1aP7Ly0t9So2+jRrKaWsrKzUHuGedPFa/+iMxcXFXsVGX/9O+6TL/evbM/jRRx+tPUIrffsB0ZGunsHLy8tiI+hh/h6wn38yAADggSc2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAICI+TYX//TTT2VlZSU1y8x9/vnntUdo5fr167VHeKBdunSpLCws1B6jsePHj9ceoZUrV67UHqGVg4ODzs/c3t7u1Q4+//zztUdo5eLFi7VHaGxnZ6e8+OKLnZ75448/9uoZPBgMao/Qyo0bN2qP0Mr29nb58ssvOzvvww8/LPPzrb5trOqHH36oPUIr58+frz1CK3t7e+X9999vdK03GwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAx3+biX3/9tSwvL6dmmbnLly/XHqGVa9eu1R6hlfF4XJ5++unOznvjjTfK8ePHOzvvfr322mu1R2hlMBjUHuGB98knn5ThcFh7jMZu375de4RWvv7669ojNLa/v9/5mVeuXOnVM3hjY6P2CK1cunSp9git7OzsdHreN998U1ZWVjo9834899xztUdo5cyZM7VHaGUymTS+1psNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiJhvctF0Oi2llHLr1q3oMLN2eHhYe4RWxuNx7RFaOZr3aD9Sju6/t7cXPWfWtre3a4/wfyG9f/97Rt8+A2/fvl17hFb29/drj9DYwcFBKcX+3U3fPrN3dnZqj9DK7u5uKaW7Z3Dfnml9+/ybTCa1R2jlaN4m+zeYNrhqa2urrK+v3/9kPJQ2NzfL2tpa7P72j7tJ718pdpA7s3/U5hlMTU32r1FsTCaTMhqNynA4LIPBYGYD0m/T6bSMx+Oyurpa5uZyv5Fn//g3Xe1fKXaQf7J/1OYZTE1t9q9RbAAAALTlP4gDAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAET8BzqsJz2mov4JAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1000x600 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2nd convolution layer:\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAxsAAAGVCAYAAACW++xIAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAD4BJREFUeJzt2z9o3PUfx/HPJZe0TXsJKgiGRHCR7hYHwa0FxaE6i2DVRQUriLtIURBcdC7iIFKwqB3EUQRFQScHB1GHlMx6SW2aNLnfdP4K/uH7bfL6fvqtj8f85T7v3r1z33v2ksFkMpkUAACAAzZTewAAAOD2JDYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAEDEsMlFe3t7ZX19vYxGozIYDNIz0ROTyaRsbGyU5eXlMjOT61b7x9/pav9KsYP8lf2jNvdgamqzf41iY319vayurh7IcNx+1tbWysrKSuzx7R//Jr1/pdhB/pn9ozb3YGpqsn+NYmM0GpVSSjl16lSZm5vb/2Qd+frrr2uP0MrJkydrj9DKzs5O+fTTT//cj5Tp4585c6bMz89HzzpIb731Vu0RWrlw4ULtEVq5evVqOXv2bHz/Svn/Dp4+fbpX74Hnz5+vPUIrS0tLtUdorcv9e/jhh8tw2Oi2fUu4ePFi7RFaefPNN2uP0Mq1a9fKO++809k9+Mcff+xk3w/KZ599VnuEVs6dO1d7hFb29vbK5cuXG+1Eo3et6ddmc3NzvbrR9u3rvj49tzdKP8/Tx5+fn+9VbCwuLtYeoZUjR47UHuGmdPFz3tf3wL7tYB91uX/D4bBXsdG3/Tt06FDtEW5KV/fg0WjUq9e0b/e09K9jpjTZv37+ywAAgFue2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIoZtLv7www/L4uJiapYD9/7779ceoZXPP/+89gitTCaTTs977733ymAw6PTM/fjqq69qj9DKU089VXuEVra2tjo/86OPPur8zP0YDlu9xVf3xRdf1B6hsStXrpTHHnus0zO3trZ69Zr2adZSSnn88cdrj9DKzs5Op+edPn26V6/pPffcU3uEVn799dfaI7QyHo/L0tJSo2t9swEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARwzYXLy0tpeaIePvtt2uP0Mprr71We4RWNjc3y8WLFzs774cffiij0aiz8/br22+/rT1CK0888UTtEW55L7/8cjl06FDtMRq7dOlS7RFauXDhQu0RGptMJp2fefz48TI/P9/5uTdrZ2en9gitfPzxx7VHaGU8Hnf6uWw4HJbhsNXHxqqOHj1ae4RWBoNB7RFifLMBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEcMmF00mk/QcEVtbW7VHaGVzc7P2CK1M503vx/Tx+/b8/PHHH7VH+E/o4v1pesa1a9fiZx2k3d3d2iO00qd7zXTWLvdve3s7ftZBun79eu0RWhmPx7VHaGU6b1f34L69njs7O7VH+E9osn+DSYOrLl++XFZXVw9kKG4/a2trZWVlJfb49o9/k96/Uuwg/8z+UZt7MDU12b9GsbG3t1fW19fLaDQqg8HgwAak3yaTSdnY2CjLy8tlZib3G3n2j7/T1f6VYgf5K/tHbe7B1NRm/xrFBgAAQFv+QBwAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAxLDJRXt7e2V9fb2MRqMyGAzSM9ETk8mkbGxslOXl5TIzk+tW+8ff6Wr/SrGD/JX9ozb3YGpqs3+NYmN9fb2srq4eyHDcftbW1srKykrs8e0f/ya9f6XYQf6Z/aM292BqarJ/jWJjNBqVUkp5/fXXy+HDh/c/WUceeOCB2iO08vPPP9ceoZWrV6+Ws2fP/rkfKdPHv//++8vs7Gz0rIP0yy+/1B6hlYWFhdojtDKZTMpvv/0W379S/r+Dd911V/x/sQ/S888/X3uEVl555ZXaIzQ2Ho/L6upqp/t3/vz5Xv2c9ulnpZRS7r333tojtHLlypVy8uTJzu7Ba2trZXFxMXrWQerb+9+7775be4RWxuNxue+++xrtX6PYmH5tdvjw4XLkyJH9Tdeho0eP1h6hlT49tzdKf606ffzZ2dlexUbfvm7u27xTXcw9PWNmZqZXH6D69J9DpZRefZCZ6nL/FhYWxEbQsWPHao9wU7q6By8uLvbqZ3R+fr72CK306bm9UZP969c7AQAA0BtiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIGLa5+KGHHirHjh1LzXLgnnvuudojtPLiiy/WHqGV69evd3re8ePHy9zcXKdn7seXX35Ze4RW7rzzztoj3PLeeOONsrCwUHuMxp588snaI7Ry6tSp2iM0trm52fmZv//+e9ne3u783Jv1yCOP1B6hlbvvvrv2CK2Mx+NOzztx4kSZnZ3t9Mz9uHTpUu0RWnn00Udrj9BKm8+AvtkAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACAiGGbiz/55JNy6NCh1CwH7rvvvqs9QitPP/107RFaGY/H5YUXXujsvOvXr5fBYNDZeft1xx131B6hlTNnztQeoZXt7e3ywQcfdHrm999/36v3wGeeeab2CK08++yztUdobHd3t/MzX3311V69B7700ku1R2jl3LlztUe4pf3000+1R2jlwQcfrD1CK998803tEVrZ3NwsJ06caHStbzYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIgQGwAAQITYAAAAIsQGAAAQITYAAIAIsQEAAESIDQAAIEJsAAAAEWIDAACIEBsAAECE2AAAACLEBgAAECE2AACACLEBAABEiA0AACBCbAAAABFiAwAAiBAbAABAhNgAAAAixAYAABAhNgAAgAixAQAARIgNAAAgYtjkoslkUkop5dq1a9Fh/uvG43HtEVqZzjvdj5Tp4+/s7ETPOWh9ez23t7drj9DKdB/S+3fjGX17jvo27+7ubu0RGpvO2uX+dXHWQfKZoRtd3YP7pm9zb25u1h6hlem8TZ7nwaTBVZcvXy6rq6v7n4zb0traWllZWYk9vv3j36T3rxQ7yD+zf9TmHkxNTfavUWzs7e2V9fX1MhqNymAwOLAB6bfJZFI2NjbK8vJymZnJ/Uae/ePvdLV/pdhB/sr+UZt7MDW12b9GsQEAANCWPxAHAAAixAYAABAhNgAAgAixAQAARIgNAAAgQmwAAAARYgMAAIj4H15FA6kXcwUBAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1000x600 with 10 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# model.layers will print a list of layer parameters/values\n",
"filters1, biases1 = model.layers[1].get_weights()\n",
"filters2, biases2 = model.layers[3].get_weights()\n",
"\n",
"# normalize filter values to range 0-1 for better colormapping during plotting\n",
"def norm_filter(kernel):\n",
" return (kernel - np.min(kernel)) / (np.max(kernel) - np.min(kernel))\n",
"\n",
"print('1st convolution layer:')\n",
"fig, axs = plt.subplots(2,5, figsize=(10, 6))\n",
"axs = axs.ravel()\n",
"for i in range(10):\n",
" axs[i].imshow(norm_filter(filters1[:,:,0,i]), cmap=plt.cm.binary)\n",
" axs[i].set_xticks([]); axs[i].set_yticks([]); axs[i].grid(False)\n",
"plt.show()\n",
"\n",
"print('2nd convolution layer:')\n",
"fig, axs = plt.subplots(2,5, figsize=(10, 6))\n",
"axs = axs.ravel()\n",
"for i in range(10):\n",
" axs[i].imshow(norm_filter(filters2[:,:,0,i]), cmap=plt.cm.binary)\n",
" axs[i].set_xticks([]); axs[i].set_yticks([]); axs[i].grid(False)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2db64cc2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"624/624 - 6s - 10ms/step - loss: 0.6949 - mape: 142.0647\n"
]
},
{
"data": {
"image/png": "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ePDgATp16oTPPvsM58+fV/o2vHv37ggLC4OXlxdKSkoQGxuLpk2b4ocffih3qPHzoKOjo7Raf3mjEuRGjBiBw4cPw9XVFbm5ubh69SocHBywdetWBAYG1mhc/v7+2LVrF3r16oW0tDRcv34d/fr1w+nTpxUjEJ5kY2ODc+fOYcyYMdDT00NsbCwMDAywaNEiHDlyROVQZlNTUxw9ehTDhg1Dfn4+zp07h5MnTyI2NvapcUqShK1bt2Lz5s3o168f7t+/j+joaNja2uKTTz7BpUuXFCMf6oLffvsN+fn5sLS0VLnoWWnyNRj+/PPPGlmAE3i8mJqqXVLOnDlTpalFT/Po0SM8fPgQDx8+REZGBoDH33rKyx4+fFhjUzjko5SEEDh79qzK65MvmFhZOjo6OHDgAFasWIGOHTsiPj4eDx8+xIABA3DgwIEKp1IsWbIE+/fvx8CBA5Gamoro6Gi0bt0an3/+OS5cuAAbG5tqXfOTRowYgQsXLiimUoWHh8PIyAgTJ07ExYsXMXjw4HLb9ejRA5cvX4afnx+MjIwUC/ONGTMGZ8+eVQzPf1Lr1q1x+fJlzJw5E02bNkVERASys7MxdOhQBAcHV/itvXxHEx0dnTIL0ta0hQsX4s8//8SYMWNgbm6OK1eu4N69e3BycsLs2bMRGRlZZlSC3Jo1a7Bp0yb07t0bSUlJSEpKQu/evbF582asWrWqxmNV5zW0tbVFREQEFixYgK5du0ImkyEqKgoGBgYYNmwYdu/ejTVr1pRp17BhQ5w7dw7ffPMNevfujby8PERERECSJHh6emL9+vU4cOCAykVEiV5kkhDV2A+KiIiIiIiIiF44HJlARERERERERFXCZAIRERERERERVQmTCURERERERERUJUwmEBEREREREVGVMJlARERERERERFXCZAIRERERERERVUn5m2HTc1VSUoLk5GSYmJhAkiRNh0NERERERET1nBACmZmZsLa2hpZW1ccZMJlQCyQnJ6Nly5aaDoOIiIiIiIheMElJSWjRokWV2zGZUAuYmJgAePwimpqaajgaIiIiIiIiqu8yMjLQsmVLxf1oVTGZUAvIpzaYmpoymUBERERERETPjbpT7bkAIxERERERERFVCZMJRERERERERFQlTCYQERERERERUZUwmUBEREREREREVcJkAhERERERERFVCZMJRERE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Jn52rYcOHcpzf0JCgiXEyO9xlhURYQIAABWIYRiqZm+rava2qlPMDzeuny2RdP3siDz7SmTkHpuaUSqzJfJatpG7r0Tux4NWv2Zph7O9HbMlAKAA7rnnHlWrVk0hISGKiYnR999/Lyl3mFCtWjVJf3/Sfq2LFy/q008/LZF6unfvLicnJ0VFRWnt2rW5nmawfPnyPPslZNd37ty5PEOIuXPn5nvN7GOTk5MLVWv//v31f//3f/ruu+/0f//3f7maMH788cdKTU2Vl5eXmjVrVqhzl2eECQAAVFGlMVsiKTX7iRzpOYOH6xpgWh4det3siWtnS1zKSNOlYs6WkJQrbHhz+K1qUtul2OcFgMrExcVFd999t7799ls98sgjOn/+vNq2basWLVrkGNejRw9J0rfffquxY8fqjjvukCSdPn1aI0aMKLFeBK6urho3bpzefvttPfbYY1q5cqWllv379+upp56SyWTK1ZvB399f7u7uOnHihGbOnKlJkybJMAylpKToxRdf1J49e/K9ZpMmTfTnn39q48aNud73jfTp00cdO3bUjh07NGLECH3zzTeW/gnr1q3TtGnTJEkvvfRSpepDSJgAAACK5drZEiqJ2RJpmdfMiEj/q6llpuXrvJZ2XNsA89rZEpIs3yv+73oBALmNHDlS3377rdasWSMp96wESWrfvr2GDRum77//Xn379pWPj49cXFx08OBBVatWTa+99pqeeeaZEqlnxowZ2rJli3bt2iV/f3+1atVKZrNZoaGhateunbp166avv/46xzEmk0mvvvqqnnjiCU2ZMkXvv/++GjRooPDwcCUkJOiTTz7RuHHj8rze/fffr5UrV+rRRx/V+++/r1tuuUWSNG/ePLVt2zbfOg3D0NKlS9W7d2+FhISoUaNG8vf3V3x8vCIjIyVJo0eP1vjx40vk51JeECYAAIByw87WRm7VbORWrfizJVIzsvIMHzxcHUuoWgCoXAYMGCB3d3ddvnxZhmHkeEzktb788ku1aNFCX3zxhaKjo3XLLbdo2LBhmjp1qk6fPl1i9bi4uCgkJEQzZszQ119/rcOHD6tevXp69tlnNW3aND3xxBN5Hvf444+rRo0aev3113Xo0CGlpKSoQ4cO+u9//6s777wz3zBh9OjRunz5sj799FNFRETo4MGDkq4+weJmfHx8tGfPHs2ZM0c///yz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6OOPP5YkffDBB/L397fsu/XWW/Xuu+8qPT09z2PbtGmju+66yzLTIFuTJk302WefSZK+/PLLYtV3rd9++007d+6Ug4ODvv76a9WtW9ey784771RQUJAkac6cOXneL2VkZGjx4sXy8/OzbOvcubMCAwMlSatXry6xWksST3NAsRiGoamD/HXnvE0KPnxev/15Tne0rHvzAwEAAABrSr8izfK0dhVF8/Ipyd65RE7l5eWlrl27auvWrVq+fLkeeOABy749e/YoLCxM9erVU69evXIcd/78eS1dulT/+9//dO7cOaWkpEiS4uLiJEn79u0rVl2bN2/WlStX5OXlpQEDBuTaP3jwYNWvX18nT57M8/jU1FT98MMPCg4O1vHjx3XlypUcN/LFre9a69atkyTdd999ltkN15owYYKmTJmi6OhoHT58WM2bN8+xv23bturQoUOu4zp27Cjpao+K8ogwAcXWtLaLHu7eRB9tPKJpK0LV3beWHE221i4LAAAAQAGMHDlSW7du1VdffZUjTMhe4nD//ffLxubvSe3r1q3T8OHDLcFBXi5dulSsmsLDwyVJzZs3z/Mx9DY2NvLz88szTDh+/Lj69eunw4cPl1p9edXasmXLPPdXr15dDRs2VGRkpMLDw3OFCU2bNs3zuDp16kjSDZtNWhNhAkrEk318tGzPScVcStbHG4/q6Tt8rV0SAAAAkD+T09VP+Csik1OJnm748OF6+umntWbNGl2+fFnu7u4ym82WpQrZfRWkq09KeOCBBxQXF6cxY8boscceU7NmzeTq6iobGxutX79effv2zXcJQkFl30DXrl073zHXLie41tixY3X48GHddtttmjZtmtq2bauaNWvKZDIpIyPD8mdJya41++Y/v1ojIyOVkJCQa5+zc96zTLIDnPK6lJwwASXC2cFOk+5qoSe/2qMPQiJ17z/qq2HNkv2PHAAAAFBiDKPElgpUdLVq1dIdd9yhNWvW6Mcff9TDDz+srVu36vjx4/Lx8bFMt5eurt+/fPmyunTpYnm04bViYmJKpCYXFxdJV5dT5OfcuXO5tp06dUrBwcFycnLSqlWrVLNmzVKp71rZteZVT7azZ89KujpLobKgASNKzD/b1FOXJrcoNSNL01ccsnY5AAAAAAooe/bB0qVLc/x5beNFSYqKipIkdenSJc/lByXViyC7GeHhw4fz/GQ+Kysrz2UM0dHRkq4uj7g+SLhZfXm9n8LUeuhQ3vdACQkJlhDj2iaLFR1hAkqMYRiaNthfdjaGfj10VsGH80/mAAAAAJQf99xzj6pVq6aQkBDFxMTo+++/l5Q7TKhWrZqkvz9pv9bFixf16aeflkg93bt3l5OTk6KiorR27dpc+5cvX55nv4Ts+s6dO5dnCDF37tx8r5l9bHJycqFq7d+/v6Srj3g8c+ZMrv0ff/yxUlNT5eXlpWbNmhXq3OUZYQJKlF/d6hrb1VuSNG15qFIzMq1bEAAAAICbcnFx0d13362srCw98sgjOn/+vNq2basWLVrkGNejRw9J0rfffqv169dbtp8+fVpDhw4tsV4Erq6uGjdunCTpscce059//mnZt3//fj311FMymUy5jvP395e7u7tOnDihmTNnWgKFlJQUPf3009qzZ0++12zSpIkkaePGjYWqtU+fPurYsaNSU1M1YsSIHMsd1q1bp2nTpkmSXnrppSLPfiiPCBNQ4p6+w1e1qzso6uIVLdh8zNrlAAAAACiA7KUOa9askZR7VoIktW/fXsOGDVN6err69u0rX19ftWvXTo0aNdLu3bv12muvlVg9M2bMUPv27XXs2DH5+/urTZs2at26tdq2bavatWtr6NChuY4xmUx69dVXJUlTpkyRp6enOnbsqLp16+rdd9/Vu+++m+/17r//fknSo48+qtatW6tXr17q1auX9u7de8M6DcPQ0qVL1aBBA4WEhKhRo0Zq3769fH191b9/fyUmJmr06NEaP3580X8Y5RBhAkpcdUeTXh549XEn722I1MnYwk0TAgAAAFD2BgwYIHd3d0lXb5CvfUzktb788ktNmTJF3t7eio6O1pkzZzRs2DDt2LFDt956a4nV4+LiopCQEL344otq1KiRDh8+rISEBD377LPauHGjHBwc8jzu8ccf15IlS9S2bVtdunRJkZGR6tChg1atWqXAwMB8rzd69Gi9/fbbatOmjY4cOaKNGzdq48aNio2NvWmtPj4+2rNnj/7zn/+oUaNGCg0N1blz59SzZ0998cUXWrx4caWalSBJhrm8PmeiComPj5ebm5vi4uLk6upq7XJKhNls1vCPf9eOqMu6q3U9vT/qH9YuCQAAAFVISkqKjh07psaNG8vR0dHa5QBlojC/98W9D2VmAkqFYRiaNqiVbAxp5YHT2hJxwdolAQAAAABKCGECSk1LT1eN7uwlSQpaflBpGVlWrggAAAAAUBIIE1CqnuvXTLc42+vI+SQt2kYzRgAAAACoDAgTUKrcqpn04p1XmzG+vT5CZ+NTrFwRAAAAAKC4CBNQ6oa1b6C2DWsoKS1Ts1b9efMDAAAAAADlGmECSp2NjaFXB7eSYUg/7z2lP45etHZJAAAAAIBiIExAmWjdwE0jOjWSJAX9HKqMTJoxAgAAAEBFRZiAMvPffs1Uw8mkw2cT9Pnv0dYuBwAAAABQRIQJKDPuzvb6b/9mkqS3fg3X+YRUK1cEAACAys5sNlu7BKDMlOXvO2ECytQDHRupdX03JaRm6LXVYdYuBwAAAJWUjc3VW53MzEwrVwKUnezf9+zf/9JEmIAyZWtjaNpgf0nSD7tPaFf0JStXBAAAgMrIZDLJ1tZWycnJ1i4FKDMJCQkymUwymUylfi3CBJS5fzRy1/AODSRJr/wcqswspp4BAACgZBmGIScnJ8XFxTE7AVVCcnKy4uPjVb16dRmGUerXsyv1KwB5eOHO5lpz8IxCT8Vr6fbjGt3Zy9olAQAAoJKpU6eOoqKiFB0drZo1a8rBwaFMbrKAsmI2m5WZmamEhATFx8fLwcFBtWrVKpNrEybAKmq5OOj5fs0UtDxUr689rLta11NNZ3trlwUAAIBKxN7eXg0aNNCFCxd0+vRpa5cDlBqTyaQaNWqoVq1asrW1LZNrEibAakbd1khf74jRn6fjNXdNmF4b2sbaJQEAAKCScXJyUqNGjZSRkaGMjAxrlwOUOBsbG5lMpjKfdUOYAKuxs7XR9MH+uu+j3/XNzhg90KmR2jasYe2yAAAAUAnZ2dnJzo7bH6Ck0IARVtXRu6bubVdfZrMU9PNBZdGMEQAAAADKPcIEWN1LA5rLxcFO+07E6dudMdYuBwAAAABwE4QJsLo6ro565g5fSdKcNWGKvZJm5YoAAAAAADdSIcKEJUuWaPz48erQoYPlcS6LFi3KNS49PV0//PCDxo4dqxYtWsjZ2VnVq1fXbbfdpg8++OCGz5ddunSpOnXqJGdnZ7m7u2vgwIHauXNnvuMjIiI0fPhw1a5dW9WqVVObNm303nvvKSsrqyTecpXzr67e8qvrostX0vXGunBrlwMAAAAAuAHDbDaX+0Xq3t7eio6OVq1ateTs7Kzo6GgtXLhQY8eOzTEuLCxMLVq0UPXq1dWnTx81a9ZMcXFx+uWXX3Tq1Cndfffd+vnnn3N1uZw1a5YmTZqkRo0aadiwYUpMTNTXX3+tlJQUrV27Vr169cox/tChQ+ratauuXLmi4cOHq379+lq9erUOHDigcePG6ZNPPinU+4uPj5ebm5vi4uLk6upalB9RpbDtyAWNnP8/2RjS8ie6q1V9N2uXBAAAAACVUnHvQytEmLB+/Xr5+vrKy8tLr732miZOnJhnmHDy5EktX75c//rXv+Tk5GTZnpSUpF69emnnzp369ttvdd9991n2RUREqGXLlmrSpIm2b98uN7erN7ChoaHq1KmT6tWrp7CwsBydXwMCArRp0yatXLlSAwcOlHR1VsSAAQP022+/acOGDerdu3eB3x9hwt+eWLpbK/af1j8a1dD3E7rKxqZsH28CAAAAAFVBce9DK8QyhzvuuENeXl43HVe/fn09+uijOYIESXJ2dtZzzz0nSdq4cWOOfQsXLlRGRoYmTZpkCRIkyd/fX2PGjNGRI0e0YcMGy/bw8HBt2rRJvXv3tgQJkmQymTRz5kxJ0vz58wv/JiFJmnRXCznZ22r38Vj9uOektcsBAAAAAOShQoQJJcFkMklSrmfLhoSESJL69euX65j+/ftLyhlA3Gh8p06dVKNGjVyBBQqunls1PXX71WaMr63+U3HJ6VauCAAAAABwvSoTJnz22WeScocAERERcnFxkYeHR65jfH19LWOuHX/tvmsZhiEfHx+dOnVKV65cybeW1NRUxcfH53jhb//u1lhNajvrQmKa5q2nGSMAAAAAlDdVIkz45JNPtHr1avXp0yfH0gRJiouLy7G84VrZ60bi4uJyjJdUqGOuN3v2bLm5uVleDRs2LPibqQLs7Ww09W5/SdLnv0cr7AxhCwAAAACUJ5U+TFi5cqWeeOIJeXl5acmSJdYuR5I0ceJExcXFWV4xMTHWLqnc6elXW3f6eygzy6xXfg5VBegTCgAAAABVRqUOE9auXauhQ4eqbt262rBhg+rVq5drTHb3yrxkLz+4dhZC9tc3O+ZG3TAdHBzk6uqa44XcJv+zhRxNNtp+7JKW7ztl7XIAAAAAAH+ptGHCmjVrNGTIENWqVUvBwcFq0qRJnuN8fX2VmJioM2fO5NqXV3+EvPooZDObzYqMjJSnp6ecnZ1L4m1UaQ3cnfR4Lx9J0syVfyoxNcPKFQEAAAAApEoaJmQHCe7u7goODpaPj0++YwMCAiRJ69aty7Vv7dq1OcZIUq9evfIdv337dsXGxuYYj+IZ17OJvG5x0rmEVL3zW+4ABwAAAABQ9ipdmHB9kJDXUxeu9dBDD8nOzk4zZ87MsXQhNDRUn3/+uZo2bao+ffpYtvv5+alnz54KDg7WqlWrLNvT09M1efJkSdK4ceNK+F1VXY4mWwXd3VKS9NmWY4o8l2DligAAAAAAhrkCdLZbsGCBtmzZIkk6cOCAdu/erW7dullmHAwZMkRDhgxRWFiY2rZtq9TUVD3wwANq1qxZrnN5e3tr7NixObbNnDlTkydPVqNGjTRs2DAlJSXpq6++UnJystauXavevXvnGH/o0CF17dpVycnJGj58uDw9PbVmzRrt379fgYGBmj9/fqHeX3x8vKV3A/0T8ha4eIfW/3lO3Xxu0ZKHb5NhGNYuCQAAAAAqrOLeh1aIMGHs2LFavHhxvvuDgoI0depUhYSE5Lrxv15AQIBCQkJybf/yyy81b948hYaGyt7eXl26dNH06dPVsWPHPM8THh6uSZMmKTg4WImJifLx8dH48eP1+OOPy8amcBM+CBNu7vjFK7rjrY1Ky8jSB6P+oYGtczfTBAAAAAAUTJUIEyo7woSCefPXcL3zW4Q83Ry1/vkAOdnbWbskAAAAAKiQinsfWul6JqDyeqxXUzVwr6ZTcSl6b0OktcsBAAAAgCqLMAEVhqPJVlP+ebUZ4/zNR3X0fKKVKwIAAACAqokwARVKv5Z1FeBXW+mZZk375ZBYpQMAAAAAZY8wARWKYRgKurulTLaGNoaf16+Hzlq7JAAAAACocggTUOE0qe2icT2aSJKmrziklPRMK1cEAAAAAFULYQIqpCf6+Kiem6NOXE7WhyFHrF0OAAAAAFQphAmokJzs7TT5rqvNGD/ceETHL16xckUAAAAAUHUQJqDCGtjaQ12b3qK0jCxNX3HI2uUAAAAAQJVBmIAKyzAMTR/sLzsbQ+v/PKvgsHPWLgkAAAAAqgTCBFRoPnWq69/dG0uSpv4SSjNGAAAAACgDhAmo8J663Vd1qjso+uIVLdh81NrlAAAAAEClR5iACs/FwU6T7mohSXovOFInLtOMEQAAAABKE2ECKoVBt3qqU+OaSknP0syVf1q7HAAAAACo1AgTUCkYhqFpg/xla2No9cEz2hxx3tolAQAAAEClRZiASqNFPVeN7uwlSQpaHqq0jCwrVwQAAAAAlRNhAiqVZ/v6qZaLvY6eT9JnW49ZuxwAAAAAqJQIE1CpuFUz6cU7m0uS3vktQmfiUqxcEQAAAABUPoQJqHSG/qOB/tGohq6kZWrmKpoxAgAAAEBJI0xApWNjY2j64FYyDOmXfaf0+5GL1i4JAAAAACoVwgRUSq3qu2nUbY0kSUHLDyo9k2aMAAAAAFBSCBNQaf2nXzO5O5kUfjZRi7dFWbscAAAAAKg0CBNQadVwstcLfzVjnLc+QucSaMYIAAAAACWBMAGV2v0dGurWBm5KTM3Qa6vCrF0OAAAAAFQKhAmo1GxsDE37qxnjj3tOakfUJWuXBAAAAAAVHmECKr22DWvo/g4NJUmv/ByqDJoxAgAAAECxECagSvhv/2ZydbTTn6fjtXT7cWuXAwAAAAAVGmECqoRbXBz03/7NJEmvrz2si4mpVq4IAAAAACouwgRUGSNv81LLeq6KT8nQ3DWHrV0OAAAAAFRYhAmoMmxtDL06xF+S9M3OGO05ftnKFQEAAABAxUSYgCqlvVdNDf1HA0lXmzFmZpmtXBEAAAAAVDyECahyXhrQXNUd7HTgZJy+2RFj7XIAAAAAoMIhTECVU7u6g57t6ydJmrs2TJeT0qxcEQAAAABULIQJqJLGdPFSs7rVFXslXa+voxkjAAAAABQGYQKqJDtbG00bfLUZ49Ltx3XgRJyVKwIAAACAioMwAVVW5ya3aNCtnjKbpVeWH1QWzRgBAAAAoEAIE1ClTbqrhZztbbXneKy+333C2uUAAAAAQIVQIcKEJUuWaPz48erQoYMcHBxkGIYWLVqU7/j4+Hg999xz8vLykoODg7y8vPTcc88pPj4+32OWLl2qTp06ydnZWe7u7ho4cKB27tyZ7/iIiAgNHz5ctWvXVrVq1dSmTRu99957ysrKKs5bRRmr6+qop+/wlSTNWR2muOR0K1cEAAAAAOVfhQgTJk+erE8++UTR0dGqV6/eDccmJSUpICBAb731lpo1a6Znn31WLVu21FtvvaWAgAAlJSXlOmbWrFkaNWqUzp49qwkTJmj48OHaunWrunXrppCQkFzjDx06pI4dO2rZsmXq37+/nnrqKUnSk08+qQkTJpTIe0bZGdu1sZrWdtbFpDS99Wu4tcsBAAAAgHKvQoQJCxYsUFRUlM6fP3/Tm/W5c+dq7969euGFF7Ru3Tq99tprWr16tV555RXt3btXc+fOzTE+IiJCQUFB8vPz0/79+/XGG2/o448/1rZt22RnZ6fAwEBlZGTkOObRRx9VXFycli1bpiVLlmjOnDnatWuXbr/9ds2fP1/BwcEl/jNA6bG3s9G0Qa0kSZ//HqU/T+c/gwUAAAAAUEHChDvuuENeXl43HWc2m7VgwQK5uLjolVdeybFv4sSJcnd316effiqz+e9GewsXLlRGRoYmTZokNzc3y3Z/f3+NGTNGR44c0YYNGyzbw8PDtWnTJvXu3VsDBw60bDeZTJo5c6Ykaf78+UV+r7CO7r61NLC1h7LM0is/H8zxOwIAAAAAyKlChAkFFRERoVOnTqlbt25ydnbOsc/R0VE9e/bUyZMnFRkZadmevYyhX79+uc7Xv39/SdLGjRsLNL5Tp06qUaNGjvGoOCbd1VLVTLbaEXVZy/aetHY5AAAAAFBuVbowQZJ8fX3z3J+9PXtc9tcuLi7y8PAo8Pj8rmEYhnx8fHTq1ClduXIl3zpTU1MVHx+f4wXrq1+jmp7o4yNJmrUqTAkpNGMEAAAAgLxUqjAhLi5OknIsV7iWq6trjnHZXxd2fGGvcb3Zs2fLzc3N8mrYsGG+Y1G2Ans0lvctTjqfkKq310fc/AAAAAAAqIIqVZhQUUycOFFxcXGWV0xMjLVLwl8c7GwVNMhfkrRwW5TCzyZYuSIAAAAAKH8qVZiQPVsgv1kB2csJrp1V4ObmVujxBblG9gyFvDg4OMjV1TXHC+VH72Z11LdlXWVmmRX0cyjNGAEAAADgOpUqTMirx8G18up34Ovrq8TERJ05c6bA4/O7htlsVmRkpDw9PXM1gETF8so/W8rBzka/H72olQdOW7scAAAAAChXKl2Y4Onpqa1btyopKSnHvpSUFG3atEmenp7y8fGxbA8ICJAkrVu3Ltf51q5dm2OMJPXq1Svf8du3b1dsbGyO8aiYGtZ00qO9mkqSZqz4U0mpGVauCAAAAADKj0oVJhiGocDAQCUmJmr69Ok59s2ePVuXL19WYGCgDMOwbH/ooYdkZ2enmTNn5li6EBoaqs8//1xNmzZVnz59LNv9/PzUs2dPBQcHa9WqVZbt6enpmjx5siRp3LhxpfUWUYYmBDRVw5rVdCY+Re8FR978AAAAAACoIgxzBVgQvmDBAm3ZskWSdODAAe3evVvdunWzzDAYMmSIhgwZIklKSkpS9+7dtXfvXvXt21ft27fXvn37tHr1arVt21ZbtmzJtQRh5syZmjx5sho1aqRhw4YpKSlJX331lZKTk7V27Vr17t07x/hDhw6pa9euSk5O1vDhw+Xp6ak1a9Zo//79CgwM1Pz58wv1/uLj4y29G+ifUL78euisxn2+UyZbQ2ue6ammtV2sXRIAAAAAFFtx70MrRJgwduxYLV68ON/9QUFBmjp1quX7uLg4TZs2Td9//73OnDkjDw8PDRs2TEFBQfk+0vHLL7/UvHnzFBoaKnt7e3Xp0kXTp09Xx44d8xwfHh6uSZMmKTg4WImJifLx8dH48eP1+OOPy8amcBM+CBPKL7PZrH8v2qHgw+fVw7eWPv93pxwzWwAAAACgIqoSYUJlR5hQvkVdSFK/tzYpLTNLHz3YXne28rB2SQAAAABQLMW9D61UPROA0uBdy1mP9GwiSXp1xSElp2VauSIAAAAAsC7CBKAAHuvdVJ5ujjoZm6wPQ2jGCAAAAKBqI0wACsDJ3k5T/tlSkvTRpqOKvph0kyMAAAAAoPIiTAAK6M5WHuruU0tpGVma/ssha5cDAAAAAFZDmAAUkGEYmjrIXyZbQ7+FndNvf561dkkAAAAAYBWECUAh+NRx0b+7N5YkTfvlkFLSacYIAAAAoOohTAAK6ck+vqrr6qDjl67ok01HrV0OAAAAAJQ5wgSgkFwc7DTprqvNGN8PjlTMpStWrggAAAAAyhZhAlAEd7epp9sa11RqRpZmrKQZIwAAAICqhTABKALDMDR9cCvZ2hhaG3pWG8PPW7skAAAAACgzhAlAETXzqK5/dfGWJE1dHqrUDJoxAgAAAKgaCBOAYnimr69quTjo2IUkfbrlmLXLAQAAAIAyQZgAFIOro0kTBzSXJL37W6ROxyVbuSIAAAAAKH2ECUAx3fuP+urg5a7k9EzNWPmntcsBAAAAgFJHmAAUk2EYmjbYXzaGtHL/aW2LvGDtkgAAAACgVBEmACXA39NND3b2kiQFLQ9VemaWlSsCAAAAgNJDmACUkOf7NlNNZ3tFnEvU4m1R1i4HAAAAAEoNYQJQQtycTHrxzmaSpHnrI3QuPsXKFQEAAABA6SBMAErQfe0b6taGNZSYmqFZq2jGCAAAAKByIkwASpCNjaFXB/vLMKRle0/pf0cvWrskAAAAAChxhAlACWvToIYe6NhI0tVmjBk0YwQAAABQyRAmAKXgv/2bqYaTSWFnErTkj2hrlwMAAAAAJYowASgFNZ3t9Z9+V5sxvvFruM4npFq5IgAAAAAoOYQJQCkZ0amRWtV3VUJKhuauCbN2OQAAAABQYggTgFJia2No2qBWkqTvdp3QrujLVq4IAAAAAEoGYQJQitp7ueu+9g0kSUHLDyozy2zligAAAACg+AgTgFL24oDmqu5op4Mn4/XV9uPWLgcAAAAAio0wAShltVwc9HxfP0nS6+sO63JSmpUrAgAAAIDiIUwAysCDnb3U3KO6Yq+ka+7aw9YuBwAAAACKhTABKAN2tjaaPvhqM8avdxzX/hOx1i0IAAAAAIqBMAEoI50a19SQtp4ym6UpP4cqi2aMAAAAACoowgSgDL08sIVcHOy0LyZW3+2KsXY5AAAAAFAkhAlAGarj6qhn7vCVJM1Zc1hxV9KtXBEAAAAAFF6phgnHjx/XnDlz9PTTT2vx4sXKysoqzcsBFcK/unrLt46LLiWl6Y1facYIAAAAoOIpdpjw4YcfqmbNmnrnnXdybP/jjz/UunVrvfzyy3r33Xf173//W/379ydQQJVnsrXRtEH+kqQlf0Qr9FSclSsCAAAAgMIpdpiwfPlyxcfH6957782x/bnnnlNCQoK6du2qZ555RvXq1dOGDRv09ddfF/eSN2U2m/Xjjz+qd+/eqlevnpycnNSsWTONHz9eR48ezTU+Pj5ezz33nLy8vOTg4CAvLy8999xzio+Pz/caS5cuVadOneTs7Cx3d3cNHDhQO3fuLM23hUqkq08t3dWmnrLMUtDPoTKbacYIAAAAoOIwzMW8i2ncuLFSUlJ0+vRpy7Zjx46padOmatGihQ4ePCjDMHTw4EG1adNGvXr10oYNG4pd+I08//zzevPNN1WvXj0NHjxYrq6u2rdvn9atWycXFxdt27ZNrVpdfUxfUlKSunfvrr1796pv3776xz/+oX379mnNmjVq27attmzZImdn5xznnzVrliZNmqRGjRpp2LBhSkxM1Ndff62UlBStXbtWvXr1KlS98fHxcnNzU1xcnFxdXUvqx4By7nRcsvq8vlHJ6Zl6c/ituvcfDaxdEgAAAIAqorj3ocWemXD+/Hk1aJDzJig4OFiS9MADD8gwDElSq1at5OPjo8jIyOJe8obOnDmjefPmydvbW2FhYfrwww81Z84crVmzRm+++aYSEhL05ptvWsbPnTtXe/fu1QsvvKB169bptdde0+rVq/XKK69o7969mjt3bo7zR0REKCgoSH5+ftq/f7/eeOMNffzxx9q2bZvs7OwUGBiojIyMUn2PqBzquVXTk7f7SJJmrQpTfArNGAEAAABUDMUOEzIzM5WSkpJj2+bNm2UYhgICAnJsr1mzps6fP1/cS95QVFSUsrKy1K1bt1zpyl133SVJOnfunKSryyEWLFggFxcXvfLKKznGTpw4Ue7u7vr0009zTEFfuHChMjIyNGnSJLm5uVm2+/v7a8yYMTpy5Eipz7xA5fFw98ZqUstZFxJTNe/XCGuXAwAAAAAFUuwwwdvbW5GRkYqNjZV0NVxYs2aNHB0d1aVLlxxjL126pJo1axb3kjfk6+sre3t7bd26VQkJCTn2rVq1SpLUp08fSVdnGZw6dUrdunXLtZTB0dFRPXv21MmTJ3PMpggJCZEk9evXL9e1+/fvL0nauHFjib0fVG4OdrYK+qsZ4+Lfo3T4TMJNjgAAAAAA6yt2mHDXXXcpNTVVI0eO1IoVK/TII4/o7Nmzuuuuu2QymSzj4uLidPToUXl5eRX3kjd0yy23aObMmYqKilKLFi302GOP6cUXX9TAgQP13//+V4888oiefPJJSVfDBOlqAJGX7O3Z47K/dnFxkYeHR4HG5yU1NVXx8fE5Xqi6Avxqq79/XWVmmfXKzwdpxggAAACg3LMr7glefvllLVu2TGvWrNHatWtlNpvl5uamV199Nce4H374QVlZWerdu3dxL3lT//nPf+Tp6anx48frww8/tGzv2rWrHnzwQUvIERd39ZF81y5XuFb2Monscdlf16lTp8Dj8zJ79mxNmzatgO8GVcGUf7ZUyOHz+t+xS/pl/2kNutXT2iUBAAAAQL6KPTOhZs2a2r17t15//XU98sgjmjFjhg4dOqRmzZrlGHf06FENHjxYQ4cOLe4lb2rGjBkaO3asJk6cqJiYGCUmJmrLli3KyMhQ79699eOPP5Z6DTcyceJExcXFWV4xMTFWrQfW18DdSY/3vtqMcebKQ0pMpYknAAAAgPKr2DMTpKufyD/33HM3HDNjxoySuNRNbdiwQVOmTNGzzz6rl19+2bK9W7duWrFihZo0aaJnn31W9957r2VGQn4zCbKXH1w7cyH70RkFHZ8XBwcHOTg4FPxNoUp4pGcTfb/rhI5fuqJ3N0Ro4oAW1i4JAAAAAPJU7JkJ5c3KlSslKc/lFLVr11br1q11/PhxXbhw4aY9DvLqqeDr66vExESdOXOmQOOBgnI02Sro7paSpE83H1PkuUQrVwQAAAAAeSt2mHDq1CktX75cBw8ezLHdbDbrzTffVIsWLeTm5qY+ffpo7969xb3cTaWlpUlSvo+gzN7u4OAgX19feXp6auvWrUpKSsoxLiUlRZs2bZKnp6d8fHws27Mfd7lu3bpc5167dm2OMUBh3d6irm5vXkcZWWZNXR5KM0YAAAAA5VKxw4S3335b99xzjw4dOpRj+5tvvqn//ve/Onz4sBISEhQSEqLbb79d586dK+4lb6hbt26W61+/HGHx4sWKjIxU+/btVb16dRmGocDAQCUmJmr69Ok5xs6ePVuXL19WYGCgDMOwbH/ooYdkZ2enmTNn5jh/aGioPv/8czVt2tTy6EmgKF65u6Xs7Wy0JfKC1hzMPQMGAAAAAKzNMBfzo88OHTooNDRUcXFxsre3lyRlZmbK09NTly5d0vvvv6/OnTtr7ty5Wrp0qV566SXNmjWrRIrPS2Zmpu644w6FhISodu3aGjRokNzd3bVv3z79+uuvcnBw0Pr169W9e3dJUlJSkrp37669e/eqb9++at++vfbt26fVq1erbdu22rJli5ydnXNcY+bMmZo8ebIaNWqkYcOGKSkpSV999ZWSk5O1du3aQj+xIj4+3tKLIfuJEKja3lx3WO9siJSnm6N+e76XqtnbWrskAAAAAJVIce9Dix0m1KtXT87OzoqMjLRs27p1q3r06KFBgwZp2bJlkq7etNetW1e+vr7as2dPcS55U6mpqXr77bf1zTffKCwsTGlpaapbt64CAgI0ceJEtWrVKsf4uLg4TZs2Td9//73OnDkjDw8PDRs2TEFBQfk2U/zyyy81b948hYaGyt7eXl26dNH06dPVsWPHQtdLmIDrJadl6o43N+pkbLKe6O2j//RvdvODAAAAAKCArB4mODg4qF27dvrjjz8s21577TVNmjRJH3/8sQIDAy3b27Vrp+joaF26dKk4l6x0CBOQlyW/2ioAADaRSURBVDUHz2jCkl2yt7XR2md7qnEt55sfBAAAAAAFUNz70GL3THByctLZs2dzbAsJCZEk9ezZM8d2k8mk9PT04l4SqBL6+9dVD99aSsvM0rRfaMYIAAAAoPwodpiQ/ajF7JkJMTExCg4OVv369eXn55djbHR0tOrWrVvcSwJVgmEYmjbIXyZbQyGHz2v9n6XbvBQAAAAACqrYYUJgYKDMZrMGDhyoYcOGqWvXrsrIyMixvEGS/vzzT50/fz5XvwIA+WtS20WBPZpIkqavCFVKeqaVKwIAAACAEggTxowZo+eee07x8fH68ccfdfLkSQ0bNkwvvfRSjnELFy6UJPXt27e4lwSqlCd6+6iem6NiLiXro41HrF0OAAAAABS/AWO2Cxcu6MiRI2rYsKE8PT1z7d+wYYMSEhLUo0cP1axZsyQuWWnQgBE3s2L/KT2xdI8c7Gy0/rkANazpZO2SAAAAAFRgVn+aA4qPMAE3YzabNWrB/7TtyEX1bVlX88d0sHZJAAAAACowqz/N4XrJyck6ePCgfv/9dx08eFDJycklfQmgysluxmhnY+jXQ2cVfJhmjAAAAACsp8TChLVr/7+9O4+Pqr73P/4+yWSBbAQIhEhIBBIgURaXCLKkiATEFqlQilIRFa5LWy3oRREkJGyCPwouvdqKgBax12upYi0GKYUIImKFCIGEsIiByA4zSSD7/P6ATAlJJJPtJDOv5+MxbTjne868JzT3Zt6c85kU/eQnP1FQUJB69eqlAQMGqFevXgoKCtIdd9yh9evX19dTAW4pqn2AJt4eKUlKWpuuwhKGMQIAAAAwR72UCbNnz9aIESOUmpqqkpISeXl5KSwsTF5eXiopKdGmTZt01113afbs2fXxdIDbeurOKIUE+Oi7Mxe07PPDZscBAAAA4KbqXCZ8+umnSk5OloeHh5544gllZmaqoKBA2dnZKigoUGZmpp544gl5enpqzpw5SklJqY/cgFsK8PXS8yO6S5Je3ZilY+e5jQgAAABA46tzmfDKK6/IMAwtX75cr732mqKioirsj4qK0muvvably5fLbrfr5ZdfrutTAm5tVO/rFBfZWgXFZZr3yV6z4wAAAABwQ3X+NIeQkBC1bNlSR44cuebaiIgI5efn6/Tp03V5SpfDpznAWft+sOnuVz5XmV1a9chtGhDV1uxIAAAAAJoR0z/NITc3V+3bt6/R2vbt2ys/P7+uTwm4vR4dAjWhX6QkKXHtHhWVlJkbCAAAAIBbqXOZEBYWpoyMjGuWBPn5+dq3b586dOhQ16cEIGnK0Gi18fPWwVP5WvkFwxgBAAAANJ46lwnDhg1TXl6eJk+erKKioirXFBUVadKkSbpw4YKGDx9e16cEICmohZeevevSMMaXN2TphK3A5EQAAAAA3EWdZyZkZ2erV69eslqtat++vSZPnqyYmBi1a9dOJ0+e1N69e/Xmm2/qxIkTCgoKUlpamsLDw+srv0tgZgJqq6zMrtFvfKGd35/XPb3D9PK4PmZHAgAAANAM1PV9aJ3LBEnavn27xo4dq+zsbBmGUWm/3W5Xp06d9P777ysuLq6uT+dyKBNQF7uPWjXyD1tkt0t/+a++6tu5jdmRAAAAADRxpg9glKTbbrtNGRkZevPNNzVmzBj17NlTnTt3Vs+ePTVmzBgtW7ZM+/btk7+/v7799tv6eEoAl93YMUj3x3WSJCV+lK7iUoYxAgAAAGhY9XJlQk2FhITo3LlzKikpaaynbBa4MgF1dS6/SIMXb9L5C8Wa9dMYPTzgerMjAQAAAGjCmsSVCc5oxO4CcBvBft6aNuzSMMYln+3XyVyGMQIAAABoOI1eJgBoGL+8NVw9OwYpt7BEC9dlmh0HAAAAgAujTABchKeHoaSRsZKkv35zVP8+ctbkRAAAAABcFWUC4EL6dArWL2+59NGrL3yYrtIybisCAAAAUP8oEwAXM214NwX6WrT3B5tWbz9idhwAAAAALogyAXAxbfx99MywbpKkl1IydSav0OREAAAAAFyNxdkD3nnnnVo/WWEhb2qAxnB/XCe991W29v1g00spmXpxdE+zIwEAAABwIYbdyc9q9PDwkGEYtXoyu90uwzBUWlpaq+NdVV0/3xOoytffndWYN7bJMKS/PdFfvcNbmR0JAAAAQBNR1/ehTl+Z0KlTp1qXCQAazy2RrXVvn+u0ZucxJX60R397or88PPjZBQAAAFB3TpcJ3333XQPEANAQnhvRXZ/tPaG0o1b979fZui+uk9mRAAAAALgABjACLqxdgK9+NzRakrTo0wydv1BkciIAAAAAroAyAXBxE/pFKLq9v85dKNb/W59pdhwAAAAALoAyAXBxXp4eShp5gyTp3e3fa88xq8mJAAAAADR3lAmAG+jXpY1+1itMdrs066M9Kitz6kNcAAAAAKACygTATcwY0UMtvT31zffntWbnMbPjAAAAAGjGKBMANxEa5Ksnh0RJkl5ct0/Wi8UmJwIAAADQXFEmAG7k4f7Xq3OIn07nFWnphv1mxwEAAADQTLl0mfC3v/1NQ4cOVZs2bdSiRQtdf/31uu+++5SdnV1hnc1m09SpUxURESEfHx9FRERo6tSpstls1Z579erViouLk5+fn4KDgzVixAh9/fXXDf2SgDrxtngoaWSsJOmdbUeUcbz6/40DAAAAQHVcskyw2+169NFHde+99+rw4cMaN26cnnrqKQ0cOFBffPGFjhw54libn5+v+Ph4LVmyRN26ddOUKVMUExOjJUuWKD4+Xvn5+ZXOP3/+fI0fP14nTpzQY489prFjx2rr1q3q37+/Nm3a1IivFHDewKgQ3XVDqErL7Jr1YbrsdoYxAgAAAHCOYXfBdxKvvPKKnnrqKf3617/Wyy+/LE9Pzwr7S0pKZLFYJEmJiYlKTk7WtGnTtHDhQsea8u2zZs1SUlKSY3tWVpZiYmLUuXNnffXVVwoKCpIkpaenKy4uTh06dFBGRobj/DVhs9kUFBQkq9WqwMDAurx0oEaOnb+oIYs3qaC4TC+P6617el9ndiQAAAAAjaiu70Ndrky4ePGiOnbsqFatWikzM/NH39Tb7XZ17NhRNptNx48fl5+fn2NfQUGBwsLC1LJlS2VnZ8swDEnS888/rwULFujtt9/WhAkTKpzv8ccf1xtvvKGUlBQlJCTUODNlAszw2sYs/b/1+9UuwEf/fDpeAb5eZkcCAAAA0Ejq+j7U5W5z+Oyzz3T27FmNGjVKpaWlWrNmjV588UW98cYbOnDgQIW1WVlZysnJUf/+/SsUCZLk6+urQYMG6dixYxWOK7+NoaqyYNiwYZKkzZs3/2jGwsJC2Wy2Cg+gsU0e1FmRbVrqZG6hXt144NoHAAAAAMBlLlcmlA9BtFgs6tWrl0aPHq3p06fr8ccfV7du3fTMM8841mZlZUmSoqKiqjxX+fbydeVf+/v7KzQ0tEbrq7JgwQIFBQU5HuHh4U68QqB++Fg8lfizS8MYl285rKwTuSYnAgAAANBcuFyZcPLkSUnS4sWLFRgYqK+++kq5ublKTU1VdHS0Fi9erNdff12SZLVaJckx9+Bq5Zd6lK8r/9qZ9VWZPn26rFar43H1p0sAjWVw93a6s0d7lZTZNftjhjECAAAAqBmXKxPKysokSd7e3vrwww916623yt/fXwMHDtQHH3wgDw8PLV682NSMPj4+CgwMrPAAzDLrpzHytnho64Ez+sfu42bHAQAAANAMuFyZUH7VwC233KKwsLAK+2JjY9W5c2cdPHhQ58+fd6yt7kqC8lkGV16JUD6goqbrgaauU5uWejy+iyRp7id7daGoxOREAAAAAJo6lysTunXrJklq1apVlfvLt1+8ePGaMw6qmqkQFRWlvLw8HT9e+V9wrzWDAWiqHv9JF3UMbqEfrAV6jWGMAAAAAK7B5cqEwYMHS5L27dtXaV9xcbEOHDggPz8/hYSEKCoqSmFhYdq6davy8/MrrC0oKFBqaqrCwsLUtWtXx/b4+HhJ0vr16yudPyUlpcIaoLnw9fLUrJ/GSJLe/PyQDp3KMzkRAAAAgKbM5cqELl26KCEhQQcOHNCyZcsq7HvxxRd1/vx5/fznP5fFYpFhGJo0aZLy8vKUnJxcYe2CBQt07tw5TZo0SYZhOLY/9NBDslgsmjdvXoXbHdLT0/XOO++oS5cuuuOOOxr2RQINYGhMe8VHh6i41K6kj/cyjBEAAABAtQy7C75jOHjwoG6//XadPHlSd999t7p3766dO3dq48aNioiI0Jdffun4aMf8/HwNGDBAu3bt0tChQ3XzzTcrLS1N69atU+/evbVlyxb5+flVOP+8efM0c+ZMderUSWPGjFF+fr7ee+89Xbx4USkpKY6rI2rKZrM5ZjEwjBFmOnw6X8OWpKqotEx/fOBmDYut/BGoAAAAAJq/ur4PdckyQZKys7M1a9Ysffrppzpz5oxCQ0M1cuRIzZo1S+3atauw1mq1KikpSR988IGOHz+u0NBQjRkzRomJidUOU3z33Xe1dOlSpaeny9vbW/369VNycrJuvfVWp7NSJqApeSklQ3/410Fd16qF/vl0vHy9PM2OBAAAAKCeUSa4AMoENCUXikp05+LNyrEW6MkhUZo6NNrsSAAAAADqWV3fh7rczAQAddPS26KZl4cxvrH5oL4/c8HkRAAAAACaGsoEAJXcdUOo+ndto6KSMiX/Pd3sOAAAAACaGMoEAJUYhqGkkbGyeBjasO+kNmacMDsSAAAAgCaEMgFAlbq2C9DDA66XJCV9vFcFxaUmJwIAAADQVFAmAKjWk0Oi1C7AR0fOXNCyzw+ZHQcAAABAE0GZAKBa/j4Wzbi7hyTptX8d0NFzDGMEAAAAQJkA4BpG9grTbde3VkFxmeb+fZ/ZcQAAAAA0AZQJAH6UYRhKuidWnh6GPk0/rtT9p8yOBAAAAMBklAkArql7aKAm9IuQJM3+OF1FJWUmJwIAAABgJsoEADUyZWi02vp769CpfC3fetjsOAAAAABMRJkAoEYCfb303F2XhjG+8s8s/WC9aHIiAAAAAGahTABQY/f2uU43RwTrQlGp5v8jw+w4AAAAAExCmQCgxjw8DCWNjJWHIX2clqMvDp42OxIAAAAAE1AmAHDKDdcFafxtl4cxrk1XcSnDGAEAAAB3Q5kAwGlPJ0QruKWX9p/I09tffGd2HAAAAACNjDIBgNNatfTWs8O7S5KWbsjSydwCkxMBAAAAaEyUCQBqZewt4erVMUh5hSV6kWGMAAAAgFuhTABQKx4ehpLvuUGGIa3ZeUw7vjtrdiQAAAAAjYQyAUCt9QpvpXG3hkuSXvhwj0oYxggAAAC4BcoEAHXy38O6K6iFlzKO5+rd7d+bHQcAAABAI6BMAFAnrf289cywbpKkxeszdTqv0OREAAAAABoaZQKAOrs/rpNiwwJlKyjRok8ZxggAAAC4OsoEAHXm6WEo+Z5YSdL7Xx/Vzu/PmZwIAAAAQEOiTABQL26OaK3RN3WUJM36KF2lZXaTEwEAAABoKJQJAOrNc3d1V4CvRbuPWfW/O7LNjgMAAACggVAmAKg3IQE+mjo0WpK0KCVD5/KLTE4EAAAAoCFQJgCoVw/0jVD30ACdv1Csl9Znmh0HAAAAQAOgTABQryyeHkoaeWkY43tffa/dR60mJwIAAABQ3ygTANS72zq30T29w2S3Sy98tEdlDGMEAAAAXAplAoAG8fyIHvLz9tSu7PP64JujZscBAAAAUI8oEwA0iPaBvnrqzihJ0sJ1GbJeKDY5EQAAAID6QpkAoME81P96dW3nrzP5RVqyYb/ZcQAAAADUE8oEAA3G64phjO9s+057c2wmJwIAAABQHygTADSo/l3b6u4bO6jMLiWu3SO7nWGMAAAAQHNHmQCgwc24u4daeHlqx3fn9OGuY2bHAQAAAFBHblEmLFq0SIZhyDAMffnll1Wusdlsmjp1qiIiIuTj46OIiAhNnTpVNlv1l2WvXr1acXFx8vPzU3BwsEaMGKGvv/66oV4G0GyFtWqh39zRVZI0/x8Zyi1gGCMAAADQnLl8mbBv3z7NmjVLfn5+1a7Jz89XfHy8lixZom7dumnKlCmKiYnRkiVLFB8fr/z8/ErHzJ8/X+PHj9eJEyf02GOPaezYsdq6dav69++vTZs2NeArApqnSQOv1/Vt/XQqt1Avb8gyOw4AAACAOnDpMqG0tFQPPvigevXqpZ///OfVrlu0aJF27dqladOmaf369XrxxRe1bt06zZo1S7t27dKiRYsqrM/KylJiYqKio6P17bffavHixfrjH/+oL774QhaLRZMmTVJJSUlDvzygWfGxeCrxZzGSpBVffKf9J3JNTgQAAACgtly6TFi4cKHS0tK0fPlyeXp6VrnGbrdr2bJl8vf316xZsyrsmz59uoKDg/XWW29VGBq3YsUKlZSUaMaMGQoKCnJsj42N1YQJE3Tw4EFt3LixYV4U0Iz9pFs7JcS0V2mZXYkfpTOMEQAAAGimXLZM2LNnj5KSkjRz5kzFxsZWuy4rK0s5OTnq379/pVshfH19NWjQIB07dkwHDhxwbC+/jSEhIaHS+YYNGyZJ2rx5cz28CsD1vPDTGPlYPLTt0Bn9/dsfzI4DAAAAoBZcskwoKSnRxIkT1aNHDz333HM/ujYr69K921FRUVXuL99evq78a39/f4WGhtZo/dUKCwtls9kqPAB3Ed66pZ74yaVhjPM+2af8Qm4JAgAAAJoblywT5s+f77i9wcvL60fXWq1WSapwu8KVAgMDK6wr/9qZ9VdbsGCBgoKCHI/w8PAfzQi4mkfjOyu8dQsdtxXo1Y0Hrn0AAAAAgCbF5cqEtLQ0zZ07V88884xuuukms+NUafr06bJarY5Hdna22ZGARuXr5anEn166/eitLYd08FSeyYkAAAAAOMPlyoQHH3xQXbp00ezZs2u0vvwKg+quJCi/BeHKKxGCgoKcWn81Hx8fBQYGVngA7mZIj3Ya3C1ExaV2zV7LMEYAAACgOXG5MiEtLU0ZGRny9fWVYRiOx9tvvy1J6tevnwzD0Icffijp2jMOqpqpEBUVpby8PB0/frxG6wFUZhiGEn8WK29PD32edVop6SfMjgQAAACghixmB6hvjzzySJXbU1NTlZWVpZEjRyokJESRkZGSLr3pDwsL09atW5Wfn1/hEx0KCgqUmpqqsLAwde3a1bE9Pj5e27Zt0/r16zVhwoQKz5OSkuJYA+DHRbb106PxnfXqxgOa8/e9io8OUQvvqj/GFQAAAEDTYdjd5NriiRMn6u2339a2bdvUt2/fCvsSExOVnJysadOmaeHChZW2z5o1S0lJSY7t+/fvV2xsrDp37qyvvvrKcUtDenq64uLi1KFDB2VkZMhiqVlXY7PZHLdOcMsD3M3FolLd+fvNOnb+on57R1c9ndDN7EgAAACAy6vr+1CXuzKhNqZNm6a1a9dq0aJF2rlzp26++WalpaVp3bp16t27t6ZNm1ZhfXR0tGbPnq2ZM2eqZ8+eGjNmjPLz8/Xee++puLhYb775Zo2LBMDdtfD21As/7aHHVn2jP24+pNE3dVRkW79rHwgAAADANC43M6E2/Pz8tGnTJk2ZMkUZGRlavHix9uzZoylTpmjTpk0Vbn0oN2PGDK1atUrt2rXT66+/rr/85S+6/fbbtXXrVg0ePNiEVwE0X8NiQzUwqq2KSsuU/Pe9ZscBAAAAcA1uc5tDU8ZtDoB08FSehi9NVXGpXW89eIuG9GhvdiQAAADAZdX1fShXJgBoErqE+OvhAddLkpI+3quC4lKTEwEAAACoDmUCgCbjyTui1D7QR9+fvaA/pR4yOw4AAACAalAmAGgy/HwsmnF3jCTpD/86oOyzF0xOBAAAAKAqlAkAmpSf9eygfp3bqLCkTHM/YRgjAAAA0BRRJgBoUgzDUNI9sfL0MJSSfkKb958yOxIAAACAq1AmAGhyotsHaOLtkZKk2WvTVVjCMEYAAACgKaFMANAk/e7OKLX199Hh0/l6a8ths+MAAAAAuAJlAoAmKcDXS8+P6C5JevWfB5Rz/qLJiQAAAACUo0wA0GT9vM91ujUyWBeLSzXvH/vMjgMAAADgMsoEAE2WYRhKGnmDPAzpk29/0NYDp82OBAAAAECUCQCauJiwQD3QN0KSlLg2XcWlZSYnAgAAAECZAKDJmzq0m9r4eevAyTyt3Pqd2XEAAAAAt0eZAKDJC2rppWeHXxrGuHTDfp20FZicCAAAAHBvlAkAmoUxN3dU7/BWyi8q1XyGMQIAAACmokwA0Cx4eBhKvidWhiF9uCtH2w+dMTsSAAAA4LYoEwA0Gz07ttJ9cZ0kXRrGWMIwRgAAAMAUlAkAmpX/TuimVi29lHE8V3/+8ojZcQAAAAC3RJkAoFkJ9vPWfw/rJkn6/fr9OpVbaHIiAAAAwP1QJgBodsbd2kk3XBeo3MISLfw0w+w4AAAAgNuhTADQ7Hh6GEq+5wZJ0gf/Pqp/HzlnciIAAADAvVAmAGiWbuoUrF/c3FGSlLh2j0rL7CYnAgAAANwHZQKAZuvZu7or0NeiPcdseu+r782OAwAAALgNygQAzVZbfx89nXBpGONLKZk6m19kciIAAADAPVAmAGjWxt/WSd1DA2S9WKyXUjLNjgMAAAC4BcoEAM2axdNDc0ZdGsb4lx3f69uj580NBAAAALgBygQAzd6tka318z7XyW6XXvgoXWUMYwQAAAAaFGUCAJcw/a7u8vexKC37vP7v39lmxwEAAABcGmUCAJfQLtBXv7szSpK08NNMnb/AMEYAAACgoVAmAHAZD94eqah2/jqbX6Tff7bf7DgAAACAy6JMAOAyvDw9lHRPrCRp1ZdHlJ5jNTkRAAAA4JooEwC4lNu7tNVPe3ZQmV2a9VG67HaGMQIAAAD1jTIBgMuZcXcPtfT21L+PnNOab46ZHQcAAABwOZQJAFxOh6AW+u0dl4YxLliXIVtBscmJAAAAANdCmQDAJT0y4Hp1buun03mFWvpZltlxAAAAAJdCmQDAJXlbPDR75KVhjG9v+06Zx3NNTgQAAAC4DpcrE44dO6alS5cqISFBnTp1kre3t0JDQzV69Ght3769ymNsNpumTp2qiIgI+fj4KCIiQlOnTpXNZqv2eVavXq24uDj5+fkpODhYI0aM0Ndff91QLwtALQyKDtHw2FCVltk166M9DGMEAAAA6onLlQmvvvqqpkyZokOHDmno0KF6+umnNWDAAH300Ue6/fbb9f7771dYn5+fr/j4eC1ZskTdunXTlClTFBMToyVLlig+Pl75+fmVnmP+/PkaP368Tpw4occee0xjx47V1q1b1b9/f23atKmRXimAmpj50x7y9fLQ9sNntTYtx+w4AAAAgEsw7C72T3Vr1qxRSEiIBg4cWGH7559/riFDhiggIEA5OTny8fGRJCUmJio5OVnTpk3TwoULHevLt8+aNUtJSUmO7VlZWYqJiVHnzp311VdfKSgoSJKUnp6uuLg4dejQQRkZGbJYLDXObLPZFBQUJKvVqsDAwLq8fABVePWfWVr82X61D/TRP5/+ifx9av7zCQAAALiiur4PdbkrE+69995KRYIkDRw4UIMHD9bZs2e1e/duSZLdbteyZcvk7++vWbNmVVg/ffp0BQcH66233qpwafSKFStUUlKiGTNmOIoESYqNjdWECRN08OBBbdy4sYFeHYDamDyosyLatNQJW6Fe/SfDGAEAAIC6crky4cd4eXlJkuOqgaysLOXk5Kh///7y8/OrsNbX11eDBg3SsWPHdODAAcf28tsYEhISKp1/2LBhkqTNmzc3RHwAteTr5anEn8VIkt7aclgHTuaZnAgAAABo3tymTPj++++1YcMGhYaG6sYbb5R0qUyQpKioqCqPKd9evq78a39/f4WGhtZofVUKCwtls9kqPAA0rDu6t9eQ7u1UUmbX7LXpDGMEAAAA6sAtyoTi4mI98MADKiws1KJFi+Tp6SlJslqtklThdoUrld83Ur6u/Gtn1ldlwYIFCgoKcjzCw8Ode0EAaiXxZ7Hytnhoy4HT+nTPcbPjAAAAAM2Wy5cJZWVlevjhh5WamqrJkyfrgQceMDuSpk+fLqvV6nhkZ2ebHQlwC53atNRj8V0kSXP+vlcXikpMTgQAAAA0Ty5dJtjtdk2ePFmrVq3Sr371K73xxhsV9pdfYVDdlQTltx9ceSVC+bTLmq6vio+PjwIDAys8ADSOx+O76LpWLZRjLdD//Oug2XEAAACAZslly4SysjI98sgjWr58ue677z6tXLlSHh4VX+61ZhxUNVMhKipKeXl5On688iXS15rBAMB8Lbw9NevyMMY/pR7S4dP5JicCAAAAmh+XLBPKyso0adIkrVixQr/85S/15z//2TEn4UpRUVEKCwvT1q1blZ9f8Q1FQUGBUlNTFRYWpq5duzq2x8fHS5LWr19f6XwpKSkV1gBomhJi2mtQdIiKSsuU9DHDGAEAAABnuVyZUH5FwooVK/SLX/xCq1atqrJIkCTDMDRp0iTl5eUpOTm5wr4FCxbo3LlzmjRpkgzDcGx/6KGHZLFYNG/evAq3O6Snp+udd95Rly5ddMcddzTMiwNQLwzD0OyfxcjL09CmzFPasO+k2ZEAAACAZsWwu9g/yc2ePVtJSUny9/fXU089JYvFUmnNqFGj1Lt3b0lSfn6+BgwYoF27dmno0KG6+eablZaWpnXr1ql3797asmWL/Pz8Khw/b948zZw5U506ddKYMWOUn5+v9957TxcvXlRKSooGDx7sVGabzeaYxcD8BKDxLPw0Q69vOqiOwS20YWq8fL2qLh4BAAAAV1PX96EuVyZMnDhRb7/99o+uWbFihSZOnOj4s9VqVVJSkj744AMdP35coaGhGjNmjBITE6sdpvjuu+9q6dKlSk9Pl7e3t/r166fk5GTdeuutTmemTADMcaGoREMWb9YP1gL97s4o/e7OaLMjAQAAAI2CMsEFUCYA5vn7tzn6zeqd8rF4aMPUeIW3bml2JAAAAKDB1fV9qMvNTAAAZ9x9Ywfd3qWNCkvKlPz3vWbHAQAAAJoFygQAbs0wDCWNjJXFw9Bne0/oX5kMYwQAAACuhTIBgNuLah+gh/pHSpKS1qarsKTU3EAAAABAE0eZAACSnhwSpXYBPvruzAUt+/yw2XEAAACAJo0yAQAkBfh66fkRPSRJr27M0rHzF01OBAAAADRdlAkAcNk9vcMUF9laBcVlmvcJwxgBAACA6lAmAMBlhmEo6Z5YeXoY+sfu49qSddrsSAAAAECTRJkAAFfo0SFQD/SNkCQlrt2jopIykxMBAAAATQ9lAgBcZcrQaLX199bBU/lasZVhjAAAAMDVKBMA4CpBLbz07PDukqRX/pml49YCkxMBAAAATQtlAgBUYfRNHXVTp1bKLyrV/H/sMzsOAAAA0KRQJgBAFTw8DCXfc4MMQ1qblqMvD50xOxIAAADQZFAmAEA1brguSONv6yRJSvwoXcWlDGMEAAAAJMoEAPhRzyR0U3BLL2WeyNWftx0xOw4AAADQJFAmAMCPaNXSW9MuD2Nc8tl+ncxlGCMAAABAmQAA1zD2lnD17Bik3MISLVyXaXYcAAAAwHSUCQBwDZ6XhzFK0l+/Oap/HzlrciIAAADAXJQJAFADvcNb6Ze3hEuSXvgwXaVldpMTAQAAAOahTACAGpo2vJsCfS3a+4NNq7czjBEAAADuizIBAGqojb+P/ntYN0nSSymZOpNXaHIiAAAAwByUCQDghPtvi1BMh0DZCkr0UgrDGAEAAOCeKBMAwAmXhjHGSpL+9+ts7co+b24gAAAAwASUCQDgpFsiW+vem66T3S7N+miPyhjGCAAAADdDmQAAtfDcXd0V4GPRt0et+t+vs82OAwAAADQqygQAqIV2Ab763dBoSdKiTzN0/kKRyYkAAACAxkOZAAC19GC/CHVrH6BzF4r1/9YzjBEAAADugzIBAGrJ4umhpMvDGN/d/r32HLOanAgAAABoHJQJAFAHfTu30cheYQxjBAAAgFuhTACAOppxdw/5eXvqm+/P66/fHDU7DgAAANDgKBMAoI7aB/rqySFRkqSFn2bIerHY5EQAAABAw6JMAIB68FD/69UlxE+n84q05LP9ZscBAAAAGhRlAgDUA2+Lh5JG3iBJemfbd9r3g83kRAAAAEDDoUwAgHoyIKqtRtwYqjK7lPhRuux2hjECAADANVEmAEA9mnF3jFp4eeqr785qbVqO2XEAAACABkGZAAD16LpWLfSbO7pKkuZ9sk+5BQxjBAAAgOuhTACAejZp4PWKbNNSJ3ML9erGA2bHAQAAAOodZUId7NixQyNGjFBwcLD8/PwUFxen1atXmx0LgMl8LJ5KHBkrSVq+5bCyTuSanAgAAACoX5QJtbRp0yYNGDBAn3/+ucaMGaPHH39cp0+f1vjx4zV//nyz4wEw2eBu7XRnj/YqKbMrcS3DGAEAAOBaDDu/4TqtpKRE3bt319GjR7Vt2zb16dNHkpSbm6t+/fopMzNTe/fuVVRUVI3OZ7PZFBQUJKvVqsDAwIaMDqARZZ+9oDt/v1mFJWX6w/036e6eHcyOBAAAAEiq+/tQSwNkcnkbN27UwYMH9dBDDzmKBEkKCAjQCy+8oHHjxmnFihVcoQC4ufDWLfX4T7po6YYsJX2cru2Hz0iSDEmGYVz62pAMGZf/+/Kfy/dd/o9K+y//+T9rjEr7rj5Xtc91xbl0Odd/9l3+8+Wvda3n0n8WGlef65rPVfFc5SeqkOOqc13xdNWeq/z7V+lcVz2XUV3uK/ddfa5qctf4XFf8PVeX+8fOJUeG6r8HV/+9V/13c8VfCgAAQA1RJtTCpk2bJEkJCQmV9pVv27x5c2NGqlrWBumHXQ13/gb7BbQBf7Ft0F+ayV3xtM0ws1TvuX/tWybPgIM6f6FY9q+qP7f98qMhNYXL0OwN+XfXDJ7/UgbzVfV9MFS5NLqysLm82VGolB/jWOMoK64qja44tvxo+5XFSYXnMa5Ye2VJU36Ois9doXir8Dz/eS7DqPw6fjb+SXUMC6v0PQAAADVHmVALWVlZklTlbQzBwcFq27atY01VCgsLVVhY6PizzWar/5CStH+dtGNZw5wbQI14Sfpt+ReAu6iqMWkKLcplR2xjJcoEAADqhDKhFqxWqyQpKCioyv2BgYE6evRotccvWLBASUlJDZKtgvDbpJLCa6+rk0b67bBRnqYRnqTRRpS4ymtxldchmf5OqkmMx+F7UNvvgf3yf9iv3qaKOyrtt9uv+vN/Vl3xZdXv/a9ee9UTV/dc1Z/rP3+wV7Hqx/PYK5zDfsUXVfcWVX9PyoW0aVPFVgAA4AzKBBNMnz5dU6dOdfzZZrMpPDy8/p+o59hLDwBAs2Zc9d8AAABmo0yohfIrEsqvULha+VTM6vj4+MjHx6dBsgEAAAAA0NA8zA7QHJXPSqhqLsK5c+d0+vTpGn8sJAAAAAAAzQ1lQi3Ex8dLktavX19pX/m28jUAAAAAALgayoRaGDJkiDp37qzVq1dr165dju25ubmaM2eOLBaLJk6caFo+AAAAAAAaEjMTasFisWjZsmUaNmyYBg4cqPvuu0+BgYFas2aNDh8+rLlz5yo6OtrsmAAAAAAANAjKhFoaPHiwtmzZosTERL3//vsqKipSbGys5syZo/Hjx5sdDwAAAACABmPY7U3ig7fdWvmnP1itVgUGBpodBwAAAADg4ur6PpSZCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCmUCQAAAAAAwCkWswNAstvtkiSbzWZyEgAAAACAOyh//1n+ftRZlAlNQG5uriQpPDzc5CQAAAAAAHdy5swZBQUFOX2cYa9tDYF6U1ZWppycHAUEBMgwjHo7r81mU3h4uLKzsxUYGFhv5wXgHH4WgaaBn0WgaeBnEWgarFarOnXqpHPnzqlVq1ZOH8+VCU2Ah4eHOnbs2GDnDwwM5P9QA00AP4tA08DPItA08LMINA0eHrUbpcgARgAAAAAA4BTKBAAAAAAA4BTKBBfm4+OjxMRE+fj4mB0FcGv8LAJNAz+LQNPAzyLQNNT1Z5EBjAAAAAAAwClcmQAAAAAAAJxCmQAAAAAAAJxCmQAAAAAAAJxCmQAAAAAAAJxCmeCiduzYoREjRig4OFh+fn6Ki4vT6tWrzY4FuI1Vq1bp0Ucf1S233CIfHx8ZhqGVK1eaHQtwK8eOHdPSpUuVkJCgTp06ydvbW6GhoRo9erS2b99udjzAbZw/f15PPvmk+vXrp9DQUPn4+Oi6667THXfcob/+9a9iHjxgnkWLFskwDBmGoS+//NKpY/k0Bxe0adMmDRs2TN7e3ho3bpyCgoK0Zs0aHT58WPPmzdPzzz9vdkTA5UVGRurIkSNq27at/Pz8dOTIEa1YsUITJ040OxrgNp577jktXLhQXbp0UXx8vNq1a6esrCx9+OGHstvteu+99zR27FizYwIu78CBA+rdu7f69u2rrl27qnXr1jp58qQ+/vhjnTx5UpMnT9af/vQns2MCbmffvn3q06ePLBaL8vPztW3bNvXt27fGx1MmuJiSkhJ1795dR48e1bZt29SnTx9JUm5urvr166fMzEzt3btXUVFRJicFXNuGDRsUFRWliIgIvfjii5o+fTplAtDI1qxZo5CQEA0cOLDC9s8//1xDhgxRQECAcnJy+Kx7oIGVlpbKbrfLYrFU2J6bm6u+fftq79692rNnj2JjY01KCLif0tJS9evXT4ZhKDo6WqtWrXK6TOA2BxezceNGHTx4UPfff7+jSJCkgIAAvfDCCyopKdGKFStMTAi4hzvvvFMRERFmxwDc2r333lupSJCkgQMHavDgwTp79qx2795tQjLAvXh6elYqEqRLv58OGzZM0qWrFwA0noULFyotLU3Lly+Xp6dnrc5BmeBiNm3aJElKSEiotK982+bNmxszEgAATY6Xl5ckVfkGB0DjKCgo0MaNG2UYhmJiYsyOA7iNPXv2KCkpSTNnzqzTFUH8f1AXk5WVJUlV3sYQHBystm3bOtYAAOCOvv/+e23YsEGhoaG68cYbzY4DuI3z589r6dKlKisr08mTJ/WPf/xD2dnZSkxM5BZcoJGUlJRo4sSJ6tGjh5577rk6nYsywcVYrVZJUlBQUJX7AwMDdfTo0caMBABAk1FcXKwHHnhAhYWFWrRoUa0v7QTgvPPnzyspKcnxZy8vL7300kt6+umnTUwFuJf58+crLS1N27dvd1ylV1vc5gAAANxCWVmZHn74YaWmpmry5Ml64IEHzI4EuJXIyEjZ7XaVlJTo8OHDSk5O1owZMzR69GiVlJSYHQ9weWlpaZo7d66eeeYZ3XTTTXU+H2WCiym/IqH8CoWr2Wy2aq9aAADAVdntdk2ePFmrVq3Sr371K73xxhtmRwLclqenpyIjI/Xcc89p7ty5+tvf/qY333zT7FiAy3vwwQfVpUsXzZ49u17OR5ngYsrvN6tqLsK5c+d0+vRp7kkDALiVsrIyPfLII1q+fLnuu+8+rVy5Uh4e/AoENAXlA8LLh4gDaDhpaWnKyMiQr6+vDMNwPN5++21JcnxU5Icfflij8zEzwcXEx8drwYIFWr9+vcaNG1dh3/r16x1rAABwB2VlZZo0aZJWrFihX/7yl/rzn//MnASgCcnJyZHEJ6sAjeGRRx6pcntqaqqysrI0cuRIhYSEKDIyskbn46fWxQwZMkSdO3fW6tWr9eSTT6p3796SpNzcXM2ZM0cWi0UTJ040NSMAAI2h/IqElStX6he/+IVWrVpFkQCYYNeuXbr++usr3Wp79uxZPf/885Kku+66y4xogFtZtmxZldsnTpyorKwsTZ8+XX379q3x+SgTXIzFYtGyZcs0bNgwDRw4UPfdd58CAwO1Zs0aHT58WHPnzlV0dLTZMQGXt2zZMm3ZskWStHv3bse28ss4R40apVGjRpmUDnAPycnJWrlypfz9/RUdHa25c+dWWjNq1ChH8Q6gYaxcuVLLli3T4MGDFRERIT8/Px05ckSffPKJ8vLyNHr0aN1///1mxwTgJMoEFzR48GBt2bJFiYmJev/991VUVKTY2FjNmTNH48ePNzse4Ba2bNniuP+s3NatW7V161ZJlyZaUyYADeu7776TJOXl5WnevHlVromMjKRMABrYmDFjZLVa9eWXXyo1NVUXLlxQ69atNWDAAE2YMEHjxo2TYRhmxwTgJMNut9vNDgEAAAAAAJoPRhkDAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAABcxTAMGYZhdgwAAJosygQAAFAnkZGRjjffP/ZYuXKl2VEBAEA9sZgdAAAAuIaoqCi1a9eu2v3t27dvxDQAAKAhUSYAAIB68fzzz2vixIlmxwAAAI2A2xwAAAAAAIBTKBMAAECju3LA4erVqxUXFyd/f3+1bt1ao0aN0p49e6o9Nj8/X3PnzlXPnj3l5+enwMBA3XbbbfrDH/6gkpKSao87e/asEhMT1adPHwUGBsrf3189evTQY489pp07d1Z73Lp16zRo0CAFBAQoKChId91114+uBwDAHRh2u91udggAANB8RUZG6siRI1qxYkWNb3MoLxIWLlyoZ599VqGhoerYsaMyMzOVm5urFi1aaP369RowYECF406dOqUhQ4Zo9+7d8vDw0A033KDi4mLt27dPkjR06FCtXbtWvr6+FY5LS0vTiBEjlJOTIw8PD3Xv3l3e3t46dOiQbDabHnzwwQoDIsvzvf7663riiScUGhqqDh06KDMzU/n5+fL399eOHTvUvXv3Wn7XAABo3rgyAQAAmGbmzJlavHixjh07ph07duj48eMaP368Ll68qF/96le6ePFihfWPP/64du/erdjYWO3fv19paWnau3evduzYofbt2+uzzz5TYmJihWNsNptGjhypnJwcDR8+XEeOHFF6erp27twpq9Wq1NRUDR06tMp8Tz/9tJYvX66cnBz9+9//1g8//KAhQ4YoLy9Ps2fPbqhvCwAATR5XJgAAgDopvzLhWs6dO6dWrVpJ+s+//I8cOVIfffRRhXVFRUWKiIjQ8ePHtXz5cj300EOSpKysLHXr1k12u13ffPON+vTpU+G4//u//9PYsWPl5+enH374QQEBAZKkl156SdOmTVOPHj20c+dO+fj4XDNreb7f/va3euWVVyrs2717t3r27KmgoCCdP3/+mucCAMAV8WkOAACgXlzroyEtlsq/dvz617+utM3b21uTJk3S3LlzlZKS4igTPvvsM9ntdg0YMKBSkSBJo0ePVseOHXX06FFt3bpVw4cPlyRHWfHUU0/VqEi40qRJkyptu/HGG+Xr6yur1aozZ86oTZs2Tp0TAABXQJkAAADqRW0+GrJHjx4/un3//v2ObeVfx8TEVHlM+SyEo0ePav/+/Y4yoXyeQt++fZ3KJkldunSpcntISIiys7OVl5dHmQAAcEvMTAAAAKap7kqG9u3bS5Jyc3Md2/Ly8n70mOqOs9lskuS4xcIZfn5+VW738Lj0KxR3iwIA3BVlAgAAMM2pU6eq3H7y5ElJcsw9kCR/f/8K+6py4sSJSseVf818AwAA6g9lAgAAME35LQjVbY+OjnZsK/967969VR5TVlamjIyMSsfFxsZKkr788su6BwYAAJIoEwAAgIn+53/+p9K2oqIivfXWW5KkhIQEx/aEhAQZhqEtW7Zo586dlY5bs2aNjh49Kj8/P/Xv39+xfdSoUZKkV199VUVFRfX8CgAAcE+UCQAAwDSffPKJXn75ZcfsgYsXL2ry5MnKyclReHi4xo0b51jbtWtX3XvvvZKkCRMm6NChQ45933zzjZ588klJ0m9+85sKtzn813/9lyIiIpSenq57771Xx44dq5Bhy5YtevfddxvsNQIA4IoMO5ODAABAHURGRurIkSPX/GjIsWPHOt7wG4YhSVq4cKGeffZZhYaGKjw8XJmZmbLZbPL19VVKSooGDRpU4RynTp3SkCFDtHv3bnl6euqGG25QcXGx49aHO++8Ux9//LF8fX0rHJeWlqbhw4fr+PHj8vDwUI8ePeTl5aXDhw/LarXqwQcf1MqVKx3ry/NV92tS+Ws+fPiwIiMjnfp+AQDgCvhoSAAAUC+ysrKUlZVV7f5bbrml0rZp06apY8eOWrp0qdLT0+Xl5aWRI0dqzpw56tmzZ6X1ISEh2rZtm37/+9/r/fff1/79++Xh4aFbb71VEyZM0KOPPiovL69Kx/Xq1Ut79uzR4sWLtXbtWh0+fFienp7q2LGj7r//fj366KN1e/EAALgZrkwAAACN7lr/8g8AAJo2ZiYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACnUCYAAAAAAACn8GkOAACg0TF4EQCA5o0rEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFMoEwAAAAAAgFP+P4pY6dRJ/xb6AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 1200x1200 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# evaluating model using all data (not in batches)\n",
"#val_loss, val_acc = model.evaluate({'image_input': test_images, 'scalar_input': test_feats}, ytest, verbose=2)\n",
"\n",
"val_loss, val_acc = model.evaluate(\n",
" {'image_input': test_images, 'scalar_input': test_feats},\n",
" ytest_std,\n",
" verbose=2\n",
")\n",
"\n",
"\n",
"\n",
"fig,ax = plt.subplots(nrows=2,ncols=1,figsize=(12,12))\n",
"fs_L, fs_M, fs_S = 18, 16, 14\n",
"ax[0].plot(history.history['mape'], label='train')\n",
"ax[0].plot(history.history['val_mape'], label='validation')\n",
"ax[0].set_xlabel('Epoch', fontsize=fs_M)\n",
"ax[0].set_ylabel('Mean Absolute Percentage Error', fontsize=fs_M)\n",
"ax[0].tick_params(axis='both', which='major', labelsize=fs_S)\n",
"ax[0].set_title('Final mean validation MAPE: {}'.format(val_acc), fontsize=fs_M)\n",
"ax[0].set_xticks(range(0,5))\n",
"ax[0].legend(loc='lower right', fontsize=fs_M)\n",
"\n",
"ax[1].plot(history.history['loss'], label='train')\n",
"ax[1].plot(history.history['val_loss'], label='validation')\n",
"ax[1].set_xlabel('Epoch', fontsize=fs_M)\n",
"ax[1].set_ylabel('Loss', fontsize=fs_M)\n",
"ax[1].tick_params(axis='both', which='major', labelsize=fs_S)\n",
"ax[1].set_xticks(range(0,5))\n",
"ax[1].legend(loc='upper right', fontsize=fs_M)\n",
"\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "appml25",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
|