{"id":2151,"date":"2021-02-25T12:37:20","date_gmt":"2021-02-25T12:37:20","guid":{"rendered":"https:\/\/aix.web.tr\/?p=2151"},"modified":"2024-04-22T14:14:12","modified_gmt":"2024-04-22T14:14:12","slug":"deep-learning-super-sampling-using-generative-adversarial-networks","status":"publish","type":"post","link":"https:\/\/aix.web.tr\/en\/deep-learning-super-sampling-using-generative-adversarial-networks\/","title":{"rendered":"Deep Learning Super Sampling Using Generative Adversarial Networks"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2151\" class=\"elementor elementor-2151\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2fd78b5 elementor-section-stretched elementor-hidden-tablet elementor-hidden-phone elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2fd78b5\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-46a3171\" data-id=\"46a3171\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ba5c0ba elementor-widget elementor-widget-shortcode\" data-id=\"ba5c0ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"1494\" class=\"elementor elementor-1494\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-6a0c6bf elementor-section-height-min-height elementor-section-stretched elementor-hidden-tablet elementor-hidden-phone elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-id=\"6a0c6bf\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-0f33f4b\" data-id=\"0f33f4b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e3797c5 elementor-icon-list--layout-inline elementor-align-center animated-slow elementor-list-item-link-full_width elementor-invisible elementor-widget elementor-widget-icon-list\" data-id=\"e3797c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInLeft&quot;}\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">ANA SAYFA<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/hakkimizda\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">HAKKIMIZDA<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/arastirmalar\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">ARA\u015eTIRMALAR<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/blog\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">BLOG 4.0<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-ea69513\" data-id=\"ea69513\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-bff95a7 animated-slow elementor-invisible elementor-widget elementor-widget-image\" data-id=\"bff95a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;}\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1667\" height=\"790\" src=\"https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo.png\" class=\"attachment-full size-full wp-image-3104\" alt=\"Aix Logo\" srcset=\"https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo.png 1667w, https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo-300x142.png 300w, https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo-1024x485.png 1024w, https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo-768x364.png 768w, https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo-1536x728.png 1536w, https:\/\/aix.web.tr\/wp-content\/uploads\/2020\/07\/aix-logo-18x9.png 18w\" sizes=\"(max-width: 1667px) 100vw, 1667px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-c9c0555\" data-id=\"c9c0555\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1c86e38 elementor-icon-list--layout-inline elementor-align-center animated-slow elementor-list-item-link-full_width elementor-invisible elementor-widget elementor-widget-icon-list\" data-id=\"1c86e38\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInRight&quot;}\" data-widget_type=\"icon-list.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items elementor-inline-items\">\n\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/ders\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">DERS<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/konusmalar\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">KONU\u015eMALAR<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/iletisim\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">\u0130LET\u0130\u015e\u0130M<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t\t\t<li class=\"elementor-icon-list-item elementor-inline-item\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/aix.web.tr\/basvuru\/\">\n\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-list-text\">EK\u0130BE KATIL<\/span>\n\t\t\t\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t<\/li>\n\t\t\t\t\t\t<\/ul>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-16a0022 elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"16a0022\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;,&quot;background_background&quot;:&quot;slideshow&quot;,&quot;background_slideshow_gallery&quot;:[{&quot;id&quot;:531,&quot;url&quot;:&quot;http:\\\/\\\/www.aix.web.tr\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/ezgif.com-video-to-gif-1.gif&quot;}],&quot;shape_divider_bottom&quot;:&quot;mountains&quot;,&quot;background_slideshow_loop&quot;:&quot;yes&quot;,&quot;background_slideshow_slide_duration&quot;:5000,&quot;background_slideshow_slide_transition&quot;:&quot;fade&quot;,&quot;background_slideshow_transition_duration&quot;:500}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t<div class=\"elementor-shape elementor-shape-bottom\" aria-hidden=\"true\" data-negative=\"false\">\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 1000 100\" preserveAspectRatio=\"none\">\n\t<path class=\"elementor-shape-fill\" opacity=\"0.33\" d=\"M473,67.3c-203.9,88.3-263.1-34-320.3,0C66,119.1,0,59.7,0,59.7V0h1000v59.7 c0,0-62.1,26.1-94.9,29.3c-32.8,3.3-62.8-12.3-75.8-22.1C806,49.6,745.3,8.7,694.9,4.7S492.4,59,473,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" opacity=\"0.66\" d=\"M734,67.3c-45.5,0-77.2-23.2-129.1-39.1c-28.6-8.7-150.3-10.1-254,39.1 s-91.7-34.4-149.2,0C115.7,118.3,0,39.8,0,39.8V0h1000v36.5c0,0-28.2-18.5-92.1-18.5C810.2,18.1,775.7,67.3,734,67.3z\"\/>\n\t<path class=\"elementor-shape-fill\" d=\"M766.1,28.9c-200-57.5-266,65.5-395.1,19.5C242,1.8,242,5.4,184.8,20.6C128,35.8,132.3,44.9,89.9,52.5C28.6,63.7,0,0,0,0 h1000c0,0-9.9,40.9-83.6,48.1S829.6,47,766.1,28.9z\"\/>\n<\/svg>\t\t<\/div>\n\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-012ca15\" data-id=\"012ca15\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-10ebac0 elementor-widget elementor-widget-heading\" data-id=\"10ebac0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Deep Learning Super Sampling Using Generative Adversarial Networks<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e596436 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e596436\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4b7bf94\" data-id=\"4b7bf94\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a9e07ea pa-icon-pos-after premium-lq__none elementor-widget elementor-widget-premium-addon-button\" data-id=\"a9e07ea\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation_tablet&quot;:&quot;none&quot;}\" data-widget_type=\"premium-addon-button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\n\n\t\t<a class=\"premium-button premium-button-none premium-btn-md premium-button-none\" href=\"https:\/\/aix.web.tr\/uretken-cekismeli-aglari-kullanan-dlss\/\">\n\t\t\t<div class=\"premium-button-text-icon-wrapper\">\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<svg class=\"svg-inline--fas-fa-language premium-drawable-icon premium-svg-nodraw\" aria-hidden='true' xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 640 512'><path d=\"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"><\/path><\/svg>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span >\n\t\t\t\t\t\tT\u00fcrk\u00e7e\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t<\/div>\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t<\/a>\n\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-5271551 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"5271551\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-2309d37\" data-id=\"2309d37\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4a986e7 elementor-widget elementor-widget-html\" data-id=\"4a986e7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/0c44906cc27a0589b398c9dd289162904af21a81e0bf5bf65f0a0639bbd6e166\/68747470733a2f2f692e696d6775722e636f6d2f4b54346d5a50672e6a7067\" alt=\"DLSS Example 1\">\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a57d4d9\" data-id=\"a57d4d9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e59b241 elementor-widget elementor-widget-html\" data-id=\"e59b241\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/c456f606de09d9015739ee56927d201216c4f99901023d7d92f0aa7c2ff4a277\/68747470733a2f2f692e696d6775722e636f6d2f465a36364b4f6d2e6a7067\" alt=\"DLSS Example 2\">\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-388fe8f\" data-id=\"388fe8f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e2c8d67 elementor-widget elementor-widget-html\" data-id=\"e2c8d67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/875f7491adc4e92a5980e2ab020fc87619b68be0b817861c50251671ba3a87eb\/68747470733a2f2f692e696d6775722e636f6d2f536631686e6d742e6a7067\" alt=\"DLSS Example 3\">\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b563ce7 elementor-section-content-middle elementor-section-stretched elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b563ce7\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-0dfd7ba\" data-id=\"0dfd7ba\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9c2aa44 elementor-widget elementor-widget-text-editor\" data-id=\"9c2aa44\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This article will provide you with a general framework of a <a href=\"https:\/\/aix.web.tr\/en\/dlss-nedir\/\">DLSS<\/a> Generative Adversarial Network written using the Keras library. You will be able to use this generic DLSS GAN template to train super resolution models using your own image datasets.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The complete version of the code is available at <\/span><a href=\"https:\/\/github.com\/vee-upatising\/DLSS\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>this GitHub repository<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2b3be57 elementor-widget elementor-widget-heading\" data-id=\"2b3be57\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dataset<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1cab62 elementor-widget elementor-widget-text-editor\" data-id=\"a1cab62\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This template is written in a way where you should be able to use any RGB images as your dataset. An example of a good dataset that can be used can be <\/span><a href=\"https:\/\/www.kaggle.com\/akhileshdkapse\/super-image-resolution\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>downloaded from Kaggle here<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">. This dataset provides two sets of images: one set of low resolution images with <\/span><span style=\"font-size: medium;\"><i>96&#215;96<\/i><\/span><span style=\"font-size: medium;\"> pixels and one set of high resolution images with <\/span><span style=\"font-size: medium;\"><i>384&#215;384<\/i><\/span><span style=\"font-size: medium;\"> pixels.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">To use this dataset, you only need to define your settings within the user specified parameters. Set your <\/span><span style=\"font-size: medium;\"><i>input_path <\/i><\/span><span style=\"font-size: medium;\">to LR folder within the downloaded dataset, and set your <\/span><span style=\"font-size: medium;\"><i>output_path <\/i><\/span><span style=\"font-size: medium;\">to the HR folder. You also need to specify the dimensions of your images, so set <\/span><span style=\"font-size: medium;\"><i>input_dimensions<\/i><\/span><span style=\"font-size: medium;\"> to (96,96,3) and <\/span><span style=\"font-size: medium;\"><i>output_dimensions <\/i><\/span><span style=\"font-size: medium;\">to (384,384,3). Note that the dimensions of the input and output are compatible in this case. The two image dimensions are compatible when the ratio between the high resolution and the low resolution is a multiple of 2. In this case, the 384&#215;384 images are 4 times larger than the 96&#215;96 images. This compatibility is required because of the way the <\/span><span style=\"font-size: medium;\"><i>Upsampling2D <\/i><\/span><span style=\"font-size: medium;\">layers works in Keras. The layer doubles the resolution of the input and the <\/span><span style=\"font-size: medium;\"><i>super_sampling_ratio <\/i><\/span><span style=\"font-size: medium;\">parameter determines how many times we apply the layer in our model to get from our input dimensions to our output dimensions.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">It\u2019s also important to note that you don\u2019t need to use datasets that come with two sets of images. You can use <\/span><a href=\"https:\/\/www.kaggle.com\/kvpratama\/pokemon-images-dataset\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>this dataset<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\"> for example, that only comes with one set of 256&#215;256 images. You can just set the <\/span><span style=\"font-size: medium;\"><i>input_path <\/i><\/span><span style=\"font-size: medium;\">and <\/span><span style=\"font-size: medium;\"><i>output_path <\/i><\/span><span style=\"font-size: medium;\">parameters to the same folder and the images will be processed correctly. In this example, set your output_dimensions to (256,256,3) and set your input_dimesions to (64,64,3) or (128,128,3) and the images will be resized accordingly.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a015c2 elementor-widget elementor-widget-heading\" data-id=\"9a015c2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Imports<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a6d5493 elementor-widget elementor-widget-text-editor\" data-id=\"a6d5493\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\">\n<div class=\"cell border-box-sizing code_cell rendered\">\n<div class=\"output_wrapper\">\n<div class=\"output\">\n<div class=\"output_area\">\n<div class=\"prompt output_prompt\">In [1]:<\/div>\n<div class=\"output_text output_subarea output_execute_result\">\n<div class=\"input\">\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<div class=\"input\">\n<div class=\"inner_cell\">\n<div class=\"input_area\">\n<div class=\" highlight hl-ipython3\">\n<pre><span class=\"kn\">from<\/span> <span class=\"nn\">keras.layers<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Input<\/span><span class=\"p\">,<\/span> <span class=\"n\">Dense<\/span><span class=\"p\">,<\/span> <span class=\"n\">Reshape<\/span><span class=\"p\">,<\/span> <span class=\"n\">Flatten<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">keras.layers.advanced_activations<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">LeakyReLU<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">keras.layers.convolutional<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">UpSampling2D<\/span><span class=\"p\">,<\/span> <span class=\"n\">Conv2D<\/span><span class=\"p\">,<\/span> <span class=\"n\">MaxPooling2D<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">keras.models<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Sequential<\/span><span class=\"p\">,<\/span> <span class=\"n\">Model<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">keras.optimizers<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Adam<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">sklearn.utils<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">shuffle<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">matplotlib.pyplot<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">plt<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">numpy<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">np<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">os<\/span>\n<span class=\"kn\">from<\/span> <span class=\"nn\">PIL<\/span> <span class=\"kn\">import<\/span> <span class=\"n\">Image<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">skimage.transform<\/span> <span class=\"k\">as<\/span> <span class=\"nn\">st<\/span>\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"output_wrapper\">\n<div class=\"output\">\n<div class=\"output_area\">\n<div class=\"output_subarea output_stream output_stderr output_text\">\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-60d040b elementor-widget elementor-widget-text-editor\" data-id=\"60d040b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This project requires the following libraries<\/span><\/p><ul><li><p align=\"left\"><span style=\"font-size: medium;\">Keras (I use 2.3.1)<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">Tensorflow (I use 1.14.0)<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">Sklearn<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">Skimage<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">Numpy<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">Matplotlib<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\">PIL<\/span><\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1df331b elementor-widget elementor-widget-heading\" data-id=\"1df331b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Set Parameters<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eab8df2 elementor-widget elementor-widget-text-editor\" data-id=\"eab8df2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">To customize this template to your specific needs, you need to define the parameters of the template. The current parameters are designed to be used on a GPU with 8GBs of VRAM. If you are working with a less powerful GPU, then reduce the number of convolutional filters and kernel size accordingly. The batch size can also be reduced for memory constraints. The rest of the parameters are explained below:<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bd2b049 elementor-widget elementor-widget-text-editor\" data-id=\"bd2b049\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">User Specified Parameters:<\/span><\/p><ul><li><p align=\"left\"><span style=\"font-size: medium;\"><i>input_path<\/i><\/span><span style=\"font-size: medium;\">: File path pointing to the folder containing the low resolution dataset.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>output_path<\/i><\/span><span style=\"font-size: medium;\">: File path pointing to the folder containing the high resolution dataset.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>input_dimensions<\/i><\/span><span style=\"font-size: medium;\">: Dimensions of the images inside the low resolution dataset. The image sizes must be compatible meaning output_dimensions \/ input_dimensions is a multiple of 2.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>output_dimensions<\/i><\/span><span style=\"font-size: medium;\">: Dimensions of the images inside the high resolution dataset. The image sizes must be compatible meaning output_dimensions \/ input_dimensions is a multiple of 2.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>super_sampling_ratio<\/i><\/span><span style=\"font-size: medium;\">: Integer representing the ratio of the difference in size between the two image resolutions. This integer specifies how many times the Upsampling2D and MaxPooling2D layers are used in the models.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>model_path<\/i><\/span><span style=\"font-size: medium;\">: File path pointing to the folder where you want to save to model as well as generated samples.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>interval<\/i><\/span><span style=\"font-size: medium;\">: Integer representing how many epochs between saving your model.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>epochs<\/i><\/span><span style=\"font-size: medium;\">: Integer representing how many epochs to train the model.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>batch<\/i><\/span><span style=\"font-size: medium;\">: Integer representing how many images to train at one time.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>conv_filters<\/i><\/span><span style=\"font-size: medium;\">: Integer representing how many convolutional filters are used in each convolutional layer of the Generator and the Discriminator.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>kernel<\/i><\/span><span style=\"font-size: medium;\">: Tuple representing the size of the kernels used in the convolutional layers.<\/span><\/p><\/li><li><p align=\"left\"><span style=\"font-size: medium;\"><i>png<\/i><\/span><span style=\"font-size: medium;\">: Boolean flag, set to True if the data has PNGs to remove alpha layer from images.<\/span><\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0a5b06b elementor-widget elementor-widget-text-editor\" data-id=\"0a5b06b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\">In [2]:<\/div><div class=\"output_text output_subarea output_execute_result\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"c1\"># Folder containing input (low resolution) dataset<\/span>\n<span class=\"n\">input_path<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s1\">'D:\\Downloads\\selfie2anime\\trainB'<\/span>\n\n<span class=\"c1\"># Folder containing output (high resolution) dataset<\/span>\n<span class=\"n\">output_path<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s1\">'D:\\Downloads\\selfie2anime\\trainB'<\/span>\n\n<span class=\"c1\"># Dimensions of the images inside the dataset.<\/span>\n<span class=\"c1\"># NOTE: The image sizes must be compatible meaning output_dimensions \/ input_dimensions is a multiple of 2<\/span>\n<span class=\"n\">input_dimensions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">128<\/span><span class=\"p\">,<\/span><span class=\"mi\">128<\/span><span class=\"p\">,<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Dimensions of the images inside the dataset.<\/span>\n<span class=\"c1\"># NOTE: The image sizes must be compatible meaning output_dimensions \/ input_dimensions is a multiple of 2<\/span>\n<span class=\"n\">output_dimensions<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"mi\">256<\/span><span class=\"p\">,<\/span><span class=\"mi\">3<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># How many times to increase the resolution by 2 (by appling the UpSampling2D layer)<\/span>\n<span class=\"n\">super_sampling_ratio<\/span> <span class=\"o\">=<\/span> <span class=\"nb\">int<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">\/<\/span> <span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Folder where you want to save to model as well as generated samples<\/span>\n<span class=\"n\">model_path<\/span> <span class=\"o\">=<\/span> <span class=\"sa\">r<\/span><span class=\"s2\">\"C:\\Users\\Vee\\Desktop\\python\\GAN\\DLSS\\results\"<\/span>\n\n<span class=\"c1\"># How many epochs between saving your model<\/span>\n<span class=\"n\">interval<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">5<\/span>\n\n<span class=\"c1\"># How many epochs to run the model<\/span>\n<span class=\"n\">epoch<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">100<\/span>\n\n<span class=\"c1\"># How many images to train at one time.<\/span>\n<span class=\"c1\"># Ideally this number would be a factor of the size of your dataset<\/span>\n<span class=\"n\">batch<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">25<\/span>\n\n<span class=\"c1\"># How many convolutional filters for each convolutional layer of the generator and the discrminator<\/span>\n<span class=\"n\">conv_filters<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">64<\/span>\n\n<span class=\"c1\"># Size of kernel used in the convolutional layers<\/span>\n<span class=\"n\">kernel<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">5<\/span><span class=\"p\">,<\/span><span class=\"mi\">5<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># Boolean flag, set to True if the data has pngs to remove alpha layer from images<\/span>\n<span class=\"n\">png<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">True<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-11b13b4 elementor-widget elementor-widget-heading\" data-id=\"11b13b4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Create Deep Convolutional GAN Class<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5f33828 elementor-widget elementor-widget-text-editor\" data-id=\"5f33828\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This class contains 6 methods.<\/span><\/p><ul><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>__init__(self)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: The class is initialized by defining the dimensions of the input image as well as the output image. The Generator and Discriminator models get initialized using <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>build_generator()<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> and <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>build_discriminator()<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">.<\/span><\/span><\/p><\/li><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>build_generator(self)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: Defines Generator model. The <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>Convolutional<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> and <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>UpSampling2D<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> layers increase the resolution of the image by a factor of <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>super_sampling_ratio * 2<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. Gets called when the DCGAN class is initialized.<\/span><\/span><\/p><\/li><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>build_discriminator(self)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: Defines Discriminator model. The <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>Convolutional<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> and <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>MaxPooling2D<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> layers downsample from output_dimensions to <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>1<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> scalar prediction. Gets called when the DCGAN class is initialized.<\/span><\/span><\/p><\/li><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>load_data(self)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: Loads data from user specified file path, <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>data_path<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. Reshapes images from <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>input_path<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> to have <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>input_dimensions<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. Reshapes images from <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>output_path<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> to have <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>output_dimensions<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. Gets called in the <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>train()<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> method.<\/span><\/span><\/p><\/li><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>train(self, epochs, batch_size, save_interval)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: Trains the Generative Adversarial Network. Each epoch trains the model using the entire dataset split up into chunks defined by <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>batch_size<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. If epoch is at <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>save_interval<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">, then the method calls <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>save_imgs()<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"> to generate samples and saves the model at the current epoch.<\/span><\/span><\/p><\/li><li><p align=\"left\"><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>save_imgs(self, epoch, gen_imgs, interpolated)<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">: Saves the model and generates prediction samples for a given epoch at the user specified path, <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>model_path<\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">. Each sample contains 8 interpolated images and Deep Learned Super Sampled images for comparison.<\/span><\/span><\/p><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-525f9a3 elementor-widget elementor-widget-heading\" data-id=\"525f9a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Initialization<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e7611fd elementor-widget elementor-widget-text-editor\" data-id=\"e7611fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\">In [3]:<\/div><div class=\"output_text output_subarea output_execute_result\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"k\">class<\/span> <span class=\"nc\">DCGAN<\/span><span class=\"p\">():<\/span>\n    \n    <span class=\"c1\"># Initialize parameters, generator, and discriminator models<\/span>\n    <span class=\"k\">def<\/span> <span class=\"fm\">__init__<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        \n        <span class=\"c1\"># Set dimensions of the output image<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_rows<\/span> <span class=\"o\">=<\/span> <span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_cols<\/span> <span class=\"o\">=<\/span> <span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">channels<\/span> <span class=\"o\">=<\/span> <span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_shape<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_rows<\/span><span class=\"p\">,<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_cols<\/span><span class=\"p\">,<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">channels<\/span><span class=\"p\">)<\/span>\n        \n        <span class=\"c1\"># Shape of low resolution input image<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span> <span class=\"o\">=<\/span> <span class=\"n\">input_dimensions<\/span>\n        \n        <span class=\"c1\"># Chose optimizer for the models<\/span>\n        <span class=\"n\">optimizer<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Adam<\/span><span class=\"p\">(<\/span><span class=\"mf\">0.0002<\/span><span class=\"p\">,<\/span> <span class=\"mf\">0.5<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"c1\"># Build and compile the discriminator<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">build_discriminator<\/span><span class=\"p\">()<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span><span class=\"o\">.<\/span><span class=\"n\">compile<\/span><span class=\"p\">(<\/span><span class=\"n\">loss<\/span><span class=\"o\">=<\/span><span class=\"s1\">'binary_crossentropy'<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">optimizer<\/span><span class=\"o\">=<\/span><span class=\"n\">optimizer<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">metrics<\/span><span class=\"o\">=<\/span><span class=\"p\">[<\/span><span class=\"s1\">'accuracy'<\/span><span class=\"p\">])<\/span>\n\n        <span class=\"c1\"># Build the generator<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">generator<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">build_generator<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">generator<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">generator<\/span>\n\n        <span class=\"c1\"># The generator takes low resolution images as input and generates high resolution images<\/span>\n        <span class=\"n\">z<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Input<\/span><span class=\"p\">(<\/span><span class=\"n\">shape<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">generator<\/span><span class=\"p\">(<\/span><span class=\"n\">z<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"c1\"># For the combined model we will only train the generator<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span><span class=\"o\">.<\/span><span class=\"n\">trainable<\/span> <span class=\"o\">=<\/span> <span class=\"kc\">False<\/span>\n\n        <span class=\"c1\"># The discriminator takes generated images as input and determines validity<\/span>\n        <span class=\"n\">valid<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"c1\"># The combined model  (stacked generator and discriminator)<\/span>\n        <span class=\"c1\"># Trains the generator to fool the discriminator<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">combined<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Model<\/span><span class=\"p\">(<\/span><span class=\"n\">z<\/span><span class=\"p\">,<\/span> <span class=\"n\">valid<\/span><span class=\"p\">)<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">combined<\/span><span class=\"o\">.<\/span><span class=\"n\">compile<\/span><span class=\"p\">(<\/span><span class=\"n\">loss<\/span><span class=\"o\">=<\/span><span class=\"s1\">'binary_crossentropy'<\/span><span class=\"p\">,<\/span> <span class=\"n\">optimizer<\/span><span class=\"o\">=<\/span><span class=\"n\">optimizer<\/span><span class=\"p\">)<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-39c86b1 elementor-widget elementor-widget-text-editor\" data-id=\"39c86b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">When the DCGAN class is initialized, we define the size of the images the Neural Network should expect from the dataset. The output dimensions gets specified by the Tuple <\/span><span style=\"font-size: medium;\"><i>img_shape<\/i><\/span><span style=\"font-size: medium;\">. The input dimensions also gets specified by the Tuple <\/span><span style=\"font-size: medium;\"><i>latent_dim<\/i><\/span><span style=\"font-size: medium;\">.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The optimizer we are using for both models is the <\/span><a href=\"https:\/\/keras.io\/api\/optimizers\/adam\/\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>Adam optimizer.<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\"> Feel free to experiment with the learning rate and beta values of the optimizer and see what kind of results you get.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The architecture of the Generative Adversarial Network is defined here, with both models using Binary Cross Entropy loss. The choice of Binary Cross Entropy as the loss function is explained <\/span><a href=\"https:\/\/stats.stackexchange.com\/questions\/242907\/why-use-binary-cross-entropy-for-generator-in-adversarial-networks\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>here<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">. Feel free to experiment with other loss functions but just keep in mind that both models must use the same loss function.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8f9c46a elementor-widget elementor-widget-heading\" data-id=\"8f9c46a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Load Data<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8d8b486 elementor-widget elementor-widget-text-editor\" data-id=\"8d8b486\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><pre>    <span class=\"c1\"># load data from specified file path <\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">load_data<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n        \n        <span class=\"c1\"># Initializing arrays for data and image file paths<\/span>\n        <span class=\"n\">data<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n        <span class=\"n\">small<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n        <span class=\"n\">paths<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n        \n        <span class=\"c1\"># Get the file paths of all image files in this folder<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">d<\/span><span class=\"p\">,<\/span> <span class=\"n\">f<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">walk<\/span><span class=\"p\">(<\/span><span class=\"n\">output_path<\/span><span class=\"p\">):<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n                <span class=\"k\">if<\/span> <span class=\"s1\">'.jpg'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">or<\/span> <span class=\"s1\">'png'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span><span class=\"p\">:<\/span>\n                    <span class=\"n\">paths<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">path<\/span><span class=\"o\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">file<\/span><span class=\"p\">))<\/span>\n                    \n        <span class=\"c1\"># For each file add high resolution image to array<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">path<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">paths<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Image<\/span><span class=\"o\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">path<\/span><span class=\"p\">)<\/span>\n            \n            <span class=\"c1\"># Resize Image<\/span>\n            <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"o\">.<\/span><span class=\"n\">resize<\/span><span class=\"p\">((<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_rows<\/span><span class=\"p\">,<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_cols<\/span><span class=\"p\">)))<\/span>\n            \n            <span class=\"c1\"># Remove alpha layer if imgaes are PNG<\/span>\n            <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">png<\/span><span class=\"p\">):<\/span>\n                <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">y<\/span><span class=\"p\">[<\/span><span class=\"o\">...<\/span><span class=\"p\">,:<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n                \n            <span class=\"n\">data<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">y<\/span><span class=\"p\">)<\/span>\n          \n        <span class=\"n\">paths<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n        \n        <span class=\"c1\"># Get the file paths of all image files in this folder<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">d<\/span><span class=\"p\">,<\/span> <span class=\"n\">f<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">walk<\/span><span class=\"p\">(<\/span><span class=\"n\">input_path<\/span><span class=\"p\">):<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n                <span class=\"k\">if<\/span> <span class=\"s1\">'.jpg'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">or<\/span> <span class=\"s1\">'png'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span><span class=\"p\">:<\/span>\n                    <span class=\"n\">paths<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">path<\/span><span class=\"o\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">file<\/span><span class=\"p\">))<\/span>\n                    \n        <span class=\"c1\"># For each file add low resolution image to array<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">path<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">paths<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Image<\/span><span class=\"o\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">path<\/span><span class=\"p\">)<\/span>\n            \n            <span class=\"c1\"># Resize Image<\/span>\n            <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"o\">.<\/span><span class=\"n\">resize<\/span><span class=\"p\">((<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])))<\/span>\n            \n            <span class=\"c1\"># Remove alpha layer if imgaes are PNG<\/span>\n            <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">png<\/span><span class=\"p\">):<\/span>\n                <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"o\">...<\/span><span class=\"p\">,:<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n                \n            <span class=\"n\">small<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">)<\/span>\n        \n            \n        <span class=\"c1\"># Return x_train and y_train reshaped to 4 dimensions<\/span>\n        <span class=\"n\">y_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">data<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">y_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">y_train<\/span><span class=\"o\">.<\/span><span class=\"n\">reshape<\/span><span class=\"p\">(<\/span><span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">data<\/span><span class=\"p\">),<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_rows<\/span><span class=\"p\">,<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_cols<\/span><span class=\"p\">,<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">channels<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">x_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">small<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">x_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x_train<\/span><span class=\"o\">.<\/span><span class=\"n\">reshape<\/span><span class=\"p\">(<\/span><span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">small<\/span><span class=\"p\">),<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span>\n        \n        <span class=\"k\">del<\/span> <span class=\"n\">data<\/span>\n        <span class=\"k\">del<\/span> <span class=\"n\">small<\/span>\n        <span class=\"k\">del<\/span> <span class=\"n\">paths<\/span>\n        \n        <span class=\"c1\"># Shuffle indexes of data<\/span>\n        <span class=\"n\">X_shuffle<\/span><span class=\"p\">,<\/span> <span class=\"n\">Y_shuffle<\/span> <span class=\"o\">=<\/span> <span class=\"n\">shuffle<\/span><span class=\"p\">(<\/span><span class=\"n\">x_train<\/span><span class=\"p\">,<\/span> <span class=\"n\">y_train<\/span><span class=\"p\">)<\/span>\n        \n        <span class=\"k\">return<\/span> <span class=\"n\">X_shuffle<\/span><span class=\"p\">,<\/span> <span class=\"n\">Y_shuffle<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4a4e938 elementor-widget elementor-widget-text-editor\" data-id=\"4a4e938\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The first method we are adding to the DCGAN class is <\/span><span style=\"font-size: medium;\"><i>load_data()<\/i><\/span><span style=\"font-size: medium;\">. This will preprocess all images within the user specified paths, <\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>input_path <\/i><\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\">and <\/span><\/span><span style=\"color: #24292e;\"><span style=\"font-size: medium;\"><i>output_paths<\/i><\/span><\/span><span style=\"font-size: medium;\">. The images in each folder will get resized to <\/span><span style=\"font-size: medium;\"><i>input_dimensions <\/i><\/span><span style=\"font-size: medium;\">and <\/span><span style=\"font-size: medium;\"><i>output_dimensions <\/i><\/span><span style=\"font-size: medium;\">accordingly. This method gets called inside the <\/span><span style=\"font-size: medium;\"><i>train()<\/i><\/span><span style=\"font-size: medium;\"> method to load the data before training.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">Before we return the datasets, we shuffle the x_train and y_train datasets before returning the two arrays. I wrote the<\/span><span style=\"font-size: medium;\"><i> train() <\/i><\/span><span style=\"font-size: medium;\">method to train the models on the dataset sequentially, incrementing by the batch size each iteration. So it is important to shuffle the dataset to not introduce weird biases relating to the way the dataset is sequentially ordered.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3794b5e elementor-widget elementor-widget-heading\" data-id=\"3794b5e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Build Generator<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ad792da elementor-widget elementor-widget-text-editor\" data-id=\"ad792da\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><pre> <span class=\"c1\"># Define Generator model<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">build_generator<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n\n        <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Sequential<\/span><span class=\"p\">()<\/span>\n        \n        <span class=\"c1\"># 1st Convolutional Layer \/ Input Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">input_shape<\/span><span class=\"o\">=<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"c1\"># Upsample the data as many times as needed to reach output resolution<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"n\">super_sampling_ratio<\/span><span class=\"p\">):<\/span>\n        \n            <span class=\"c1\"># Super Sampling Convolutional Layer<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">))<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n\n            <span class=\"c1\"># Upsample the data (Double the resolution)<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">UpSampling2D<\/span><span class=\"p\">())<\/span>\n\n        <span class=\"c1\"># Convolutional Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n\n        <span class=\"c1\"># Convolutional Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"c1\"># Final Convolutional Layer (Output Layer)<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">summary<\/span><span class=\"p\">()<\/span>\n\n        <span class=\"n\">noise<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Input<\/span><span class=\"p\">(<\/span><span class=\"n\">shape<\/span><span class=\"o\">=<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">latent_dim<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">model<\/span><span class=\"p\">(<\/span><span class=\"n\">noise<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"n\">Model<\/span><span class=\"p\">(<\/span><span class=\"n\">noise<\/span><span class=\"p\">,<\/span> <span class=\"n\">img<\/span><span class=\"p\">)<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2f7e8f6 elementor-widget elementor-widget-text-editor\" data-id=\"2f7e8f6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The second method we are adding to the DCGAN class is<\/span><span style=\"font-size: medium;\"><i> build_generator()<\/i><\/span><span style=\"font-size: medium;\">. This method is called when the class is first initialized. The architecture of the Generator model is designed here. The model summary will give you a clearer idea on what is actually happening inside this model.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-73306de elementor-widget elementor-widget-html\" data-id=\"73306de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/d9543d5fc527ca5c57b56b7a4c939006429c077e4d4a309c0700262941812134\/68747470733a2f2f692e696d6775722e636f6d2f4c6c31554134702e6a7067\" alt=\"DLSS Example 2\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-accf79e elementor-widget elementor-widget-text-editor\" data-id=\"accf79e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The input of the Generator model is a tensor representing an RGB image. In this case, a (128,128,3) image. This tensor is then upsampled to (256,256,3) as the output.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The output Convolutional layer contains 3 filters representing the Red, Green, and Blue channels of an RGB image respectively.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-efb69a6 elementor-widget elementor-widget-heading\" data-id=\"efb69a6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Build Discriminator<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-47f7c40 elementor-widget elementor-widget-text-editor\" data-id=\"47f7c40\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><pre><span class=\"c1\"># Define Discriminator model<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">build_discriminator<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">):<\/span>\n\n        <span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Sequential<\/span><span class=\"p\">()<\/span>\n\n        <span class=\"c1\"># Input Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">input_shape<\/span><span class=\"o\">=<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_shape<\/span><span class=\"p\">,<\/span><span class=\"n\">activation<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"relu\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">padding<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"same\"<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"c1\"># Downsample the image as many times as needed<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"n\">super_sampling_ratio<\/span><span class=\"p\">):<\/span>\n            \n            <span class=\"c1\"># Convolutional Layer<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">))<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n        \n            <span class=\"c1\"># Downsample the data (Half the resolution)<\/span>\n            <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">MaxPooling2D<\/span><span class=\"p\">(<\/span><span class=\"n\">pool_size<\/span><span class=\"o\">=<\/span><span class=\"p\">(<\/span><span class=\"mi\">2<\/span><span class=\"p\">,<\/span> <span class=\"mi\">2<\/span><span class=\"p\">)))<\/span>\n        \n        <span class=\"c1\"># Convolutional Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">strides<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n\n        <span class=\"c1\"># Convolutional Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Conv2D<\/span><span class=\"p\">(<\/span><span class=\"n\">conv_filters<\/span><span class=\"p\">,<\/span> <span class=\"n\">kernel_size<\/span><span class=\"o\">=<\/span><span class=\"n\">kernel<\/span><span class=\"p\">,<\/span> <span class=\"n\">strides<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">2<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">LeakyReLU<\/span><span class=\"p\">(<\/span><span class=\"n\">alpha<\/span><span class=\"o\">=<\/span><span class=\"mf\">0.2<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Flatten<\/span><span class=\"p\">())<\/span>\n        \n        <span class=\"c1\"># Output Layer<\/span>\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">Dense<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">activation<\/span><span class=\"o\">=<\/span><span class=\"s1\">'sigmoid'<\/span><span class=\"p\">))<\/span>\n\n        <span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">summary<\/span><span class=\"p\">()<\/span>\n\n        <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Input<\/span><span class=\"p\">(<\/span><span class=\"n\">shape<\/span><span class=\"o\">=<\/span><span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">img_shape<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">validity<\/span> <span class=\"o\">=<\/span> <span class=\"n\">model<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"n\">Model<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"p\">,<\/span> <span class=\"n\">validity<\/span><span class=\"p\">)<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0631c35 elementor-widget elementor-widget-text-editor\" data-id=\"0631c35\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The third method we are adding to the DCGAN class is <\/span><span style=\"font-size: medium;\"><i>build_discriminator()<\/i><\/span><span style=\"font-size: medium;\">. This method is called when the class is first initialized. The architecture of the Discriminator model is designed here. The model summary will give you a clearer idea on what is actually happening inside this model.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c634fd0 elementor-widget elementor-widget-html\" data-id=\"c634fd0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/ef872079c962337cfc0a960ec778815074861b8e04e3c325b17ce9dbccce7915\/68747470733a2f2f692e696d6775722e636f6d2f50693867544a522e6a7067\" alt=\"DLSS Example 2\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa658a7 elementor-widget elementor-widget-text-editor\" data-id=\"fa658a7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The input of the Discriminator model is a tensor representing an RGB image. In this case, an (256,256,3) image. The tensor is then downsampled to 252&#215;252, 126&#215;126, 61&#215;61, and 29&#215;29. This 29&#215;29 tensor is then flattened and passed to the output layer.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The final dense layer outputs a single scalar number, representing the prediction of the discriminator model. This prediction represents the confidence of the model in determining if the input image is \u201creal\u201d. A prediction of 1 means the model thinks that the image is from the original dataset. A prediction of 0 means that the model thinks that the image was generated by the Generator model.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-da908dc elementor-widget elementor-widget-heading\" data-id=\"da908dc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Train<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f11a0ba elementor-widget elementor-widget-text-editor\" data-id=\"f11a0ba\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><pre><span class=\"c1\"># Train the Generative Adversarial Network<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">train<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">epochs<\/span><span class=\"p\">,<\/span> <span class=\"n\">batch_size<\/span><span class=\"p\">,<\/span> <span class=\"n\">save_interval<\/span><span class=\"p\">):<\/span>\n        \n        <span class=\"c1\"># Prevent script from crashing from bad user input<\/span>\n        <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">epochs<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">):<\/span>\n            <span class=\"n\">epochs<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span>\n        \n        <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">batch_size<\/span> <span class=\"o\">&lt;=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">):<\/span>\n            <span class=\"n\">batch_size<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">1<\/span>\n\n        <span class=\"c1\"># Load the dataset<\/span>\n        <span class=\"n\">X_train<\/span><span class=\"p\">,<\/span> <span class=\"n\">Y_train<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">load_data<\/span><span class=\"p\">()<\/span>\n        \n        <span class=\"c1\"># Normalizing data to be between 0 and 1<\/span>\n        <span class=\"n\">X_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">X_train<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">255<\/span>\n        <span class=\"n\">Y_train<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Y_train<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">255<\/span>\n\n        <span class=\"c1\"># Adversarial ground truths<\/span>\n        <span class=\"n\">valid<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">ones<\/span><span class=\"p\">((<\/span><span class=\"n\">batch_size<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">fake<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">zeros<\/span><span class=\"p\">((<\/span><span class=\"n\">batch_size<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"c1\"># Placeholder arrays for Loss function values<\/span>\n        <span class=\"n\">g_loss_epochs<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">zeros<\/span><span class=\"p\">((<\/span><span class=\"n\">epochs<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">d_loss_epochs<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">zeros<\/span><span class=\"p\">((<\/span><span class=\"n\">epochs<\/span><span class=\"p\">,<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n        \n        <span class=\"c1\"># Training the GAN<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">epoch<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">epochs<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">):<\/span>\n            \n            <span class=\"c1\"># Initialize indexes for training data<\/span>\n            <span class=\"n\">start<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span>\n            <span class=\"n\">end<\/span> <span class=\"o\">=<\/span> <span class=\"n\">start<\/span> <span class=\"o\">+<\/span> <span class=\"n\">batch_size<\/span>\n            \n            <span class=\"c1\"># Array to sum up all loss function values<\/span>\n            <span class=\"n\">discriminator_loss_real<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n            <span class=\"n\">discriminator_loss_fake<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n            <span class=\"n\">generator_loss<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n            \n            <span class=\"c1\"># Iterate through dataset training one batch at a time<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"nb\">int<\/span><span class=\"p\">(<\/span><span class=\"nb\">len<\/span><span class=\"p\">(<\/span><span class=\"n\">X_train<\/span><span class=\"p\">)<\/span><span class=\"o\">\/<\/span><span class=\"n\">batch_size<\/span><span class=\"p\">)):<\/span>\n                \n                <span class=\"c1\"># Get batch of images<\/span>\n                <span class=\"n\">imgs_output<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Y_train<\/span><span class=\"p\">[<\/span><span class=\"n\">start<\/span><span class=\"p\">:<\/span><span class=\"n\">end<\/span><span class=\"p\">]<\/span>\n                <span class=\"n\">imgs_input<\/span> <span class=\"o\">=<\/span> <span class=\"n\">X_train<\/span><span class=\"p\">[<\/span><span class=\"n\">start<\/span><span class=\"p\">:<\/span><span class=\"n\">end<\/span><span class=\"p\">]<\/span>\n\n                <span class=\"c1\"># Train Discriminator<\/span>\n\n                <span class=\"c1\"># Make predictions on current batch using generator<\/span>\n                <span class=\"n\">gen_imgs<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">generator<\/span><span class=\"o\">.<\/span><span class=\"n\">predict<\/span><span class=\"p\">(<\/span><span class=\"n\">imgs_input<\/span><span class=\"p\">)<\/span>\n\n                <span class=\"c1\"># Train the discriminator (real classified as ones and generated as zero)<\/span>\n                <span class=\"n\">d_loss_real<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span><span class=\"o\">.<\/span><span class=\"n\">train_on_batch<\/span><span class=\"p\">(<\/span><span class=\"n\">imgs_output<\/span><span class=\"p\">,<\/span> <span class=\"n\">valid<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">d_loss_fake<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">discriminator<\/span><span class=\"o\">.<\/span><span class=\"n\">train_on_batch<\/span><span class=\"p\">(<\/span><span class=\"n\">gen_imgs<\/span><span class=\"p\">,<\/span> <span class=\"n\">fake<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">d_loss<\/span> <span class=\"o\">=<\/span> <span class=\"mf\">0.5<\/span> <span class=\"o\">*<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">d_loss_real<\/span><span class=\"p\">,<\/span> <span class=\"n\">d_loss_fake<\/span><span class=\"p\">)<\/span>\n\n                <span class=\"c1\">#  Train Generator<\/span>\n\n                <span class=\"c1\"># Train the generator (wants discriminator to mistake images as real)<\/span>\n                <span class=\"n\">g_loss<\/span> <span class=\"o\">=<\/span> <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">combined<\/span><span class=\"o\">.<\/span><span class=\"n\">train_on_batch<\/span><span class=\"p\">(<\/span><span class=\"n\">imgs_input<\/span><span class=\"p\">,<\/span> <span class=\"n\">valid<\/span><span class=\"p\">)<\/span>\n                \n                <span class=\"c1\"># Add loss for current batch to sum over entire epoch<\/span>\n                <span class=\"n\">discriminator_loss_real<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">d_loss<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">])<\/span>\n                <span class=\"n\">discriminator_loss_fake<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">d_loss<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span>\n                <span class=\"n\">generator_loss<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">g_loss<\/span><span class=\"p\">)<\/span>\n                \n                <span class=\"c1\"># Increment image indexes<\/span>\n                <span class=\"n\">start<\/span> <span class=\"o\">=<\/span> <span class=\"n\">start<\/span> <span class=\"o\">+<\/span> <span class=\"n\">batch_size<\/span>\n                <span class=\"n\">end<\/span> <span class=\"o\">=<\/span> <span class=\"n\">end<\/span> <span class=\"o\">+<\/span> <span class=\"n\">batch_size<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cb55cfc elementor-widget elementor-widget-text-editor\" data-id=\"cb55cfc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The fourth method we are adding to the DCGAN class is <\/span><span style=\"font-size: medium;\"><i>train()<\/i><\/span><span style=\"font-size: medium;\">. This method will train the network for a specified number of epochs in increments specified by the batch size. When the training completes, the method will return two arrays representing the loss values of both models across every epoch. The loss values can be plotted using Matplotlib. <\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">You should track the loss values and stop training the network if it starts collapsing. The network collapses if one of the models gets close to 0 loss. <\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-96fe7d5 elementor-widget elementor-widget-html\" data-id=\"96fe7d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/doKXf22.png\" alt=\"DLSS Example 2\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-958bf19 elementor-widget elementor-widget-text-editor\" data-id=\"958bf19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">If the Generator gets close to 0 loss, then that means the Generator has figured out how to make an image that will fool the discriminator everytime. This will usually result in the Generator only being able to produce one type of image, also known as <\/span><a href=\"https:\/\/developers.google.com\/machine-learning\/gan\/problems#mode-collapse\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>mode collapse<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">If the Discriminator gets close to 0 loss, then that means that the Discriminator has figured out how to distinguish between the training data and generated images very accurately. This will cause the Generator to be unable to continue to learn from the discriminator, also known as the <\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Vanishing_gradient_problem\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>vanishing gradient problem<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">To avoid losing our progress when our network collapses, we will save the model every few epochs. The user defined parameter, interval, will determine how often the model gets saved. Every time the current epoch lands on the defined interval, <\/span><span style=\"font-size: medium;\"><i>save_imgs()<\/i><\/span><span style=\"font-size: medium;\"> gets called. The method will save an image of some predicted samples to get a snapshot of how good the model was during that epoch.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8aa1af1 elementor-widget elementor-widget-heading\" data-id=\"8aa1af1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Save Images<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-27c8a67 elementor-widget elementor-widget-text-editor\" data-id=\"27c8a67\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><pre>  <span class=\"c1\"># Save the model and generate prediction samples for a given epoch<\/span>\n    <span class=\"k\">def<\/span> <span class=\"nf\">save_imgs<\/span><span class=\"p\">(<\/span><span class=\"bp\">self<\/span><span class=\"p\">,<\/span> <span class=\"n\">epoch<\/span><span class=\"p\">,<\/span> <span class=\"n\">gen_imgs<\/span><span class=\"p\">,<\/span> <span class=\"n\">interpolated<\/span><span class=\"p\">):<\/span>\n        \n        <span class=\"c1\"># Define number of columns and rows<\/span>\n        <span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">4<\/span><span class=\"p\">,<\/span> <span class=\"mi\">4<\/span>\n        \n        <span class=\"c1\"># Placeholder array for MatPlotLib Figure Subplots<\/span>\n        <span class=\"n\">subplots<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n        \n        <span class=\"c1\"># Create figure with title<\/span>\n        <span class=\"n\">fig<\/span> <span class=\"o\">=<\/span> <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">figure<\/span><span class=\"p\">(<\/span><span class=\"n\">figsize<\/span><span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"mi\">40<\/span><span class=\"p\">,<\/span> <span class=\"mi\">40<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">fig<\/span><span class=\"o\">.<\/span><span class=\"n\">suptitle<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Epoch: \"<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">epoch<\/span><span class=\"p\">),<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">65<\/span><span class=\"p\">)<\/span>\n        \n        <span class=\"c1\"># Initialize counters needed to track indexes across multiple arrays<\/span>\n        <span class=\"n\">img_count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">index_count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">x_count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span><span class=\"p\">;<\/span>\n        \n        <span class=\"c1\"># Loop through columns and rows of the figure<\/span>\n        <span class=\"k\">for<\/span> <span class=\"n\">i<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">):<\/span>\n            <span class=\"k\">for<\/span> <span class=\"n\">j<\/span> <span class=\"ow\">in<\/span> <span class=\"nb\">range<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span> <span class=\"n\">r<\/span><span class=\"o\">+<\/span><span class=\"mi\">1<\/span><span class=\"p\">):<\/span>\n                <span class=\"c1\"># If row is even, plot the predictions<\/span>\n                <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">j<\/span> <span class=\"o\">%<\/span> <span class=\"mi\">2<\/span> <span class=\"o\">==<\/span> <span class=\"mi\">0<\/span><span class=\"p\">):<\/span>\n                    <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">gen_imgs<\/span><span class=\"p\">[<\/span><span class=\"n\">index_count<\/span><span class=\"p\">]<\/span>\n                    <span class=\"n\">index_count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">index_count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span>\n                <span class=\"c1\"># If row is odd, plot the interpolated images<\/span>\n                <span class=\"k\">else<\/span><span class=\"p\">:<\/span>\n                    <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">interpolated<\/span><span class=\"p\">[<\/span><span class=\"n\">x_count<\/span><span class=\"p\">]<\/span>\n                    <span class=\"n\">x_count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x_count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span>\n                <span class=\"c1\"># Add image to figure, add subplot to array<\/span>\n                <span class=\"n\">subplots<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">fig<\/span><span class=\"o\">.<\/span><span class=\"n\">add_subplot<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">c<\/span><span class=\"p\">,<\/span> <span class=\"n\">img_count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span>\n                <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">imshow<\/span><span class=\"p\">(<\/span><span class=\"n\">img<\/span><span class=\"p\">)<\/span>\n                <span class=\"n\">img_count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">img_count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span>\n        \n        <span class=\"c1\"># Add title to columns of figure<\/span>\n        <span class=\"n\">subplots<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_title<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Interpolated\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">45<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">subplots<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_title<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Predicted\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">45<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">subplots<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_title<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Interpolated\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">45<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">subplots<\/span><span class=\"p\">[<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_title<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Predicted\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">45<\/span><span class=\"p\">)<\/span>\n                \n        <span class=\"c1\"># Save figure to .png image in specified folder<\/span>\n        <span class=\"n\">fig<\/span><span class=\"o\">.<\/span><span class=\"n\">savefig<\/span><span class=\"p\">(<\/span><span class=\"n\">model_path<\/span> <span class=\"o\">+<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\\\<\/span><span class=\"s2\">epoch_<\/span><span class=\"si\">%d<\/span><span class=\"s2\">.png\"<\/span> <span class=\"o\">%<\/span> <span class=\"n\">epoch<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">close<\/span><span class=\"p\">()<\/span>\n        \n        <span class=\"c1\"># save model to .h5 file in specified folder<\/span>\n        <span class=\"bp\">self<\/span><span class=\"o\">.<\/span><span class=\"n\">generator<\/span><span class=\"o\">.<\/span><span class=\"n\">save<\/span><span class=\"p\">(<\/span><span class=\"n\">model_path<\/span> <span class=\"o\">+<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\\\<\/span><span class=\"s2\">generator\"<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">epoch<\/span><span class=\"p\">)<\/span> <span class=\"o\">+<\/span> <span class=\"s2\">\".h5\"<\/span><span class=\"p\">)<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43a1a9d elementor-widget elementor-widget-text-editor\" data-id=\"43a1a9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">The fifth and last method we are adding to the DCGAN class is <\/span><span style=\"font-size: medium;\"><i>save_imgs().<\/i><\/span><span style=\"font-size: medium;\"> This method will save the model at the current epoch and plot 8 super sampled images compared to their interpolated counterparts. The generated sample will allow you to compare the quality of the DLSS model vs. Nearest Neighbor Interpolation.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9a72ebf elementor-widget elementor-widget-html\" data-id=\"9a72ebf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/0119db56b2840cd4968673dda641694a2eaae35c3ac414386659e167fb00148d\/68747470733a2f2f692e696d6775722e636f6d2f77436c6945414d2e706e67\" alt=\"DLSS Example 2\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ffad684 elementor-widget elementor-widget-text-editor\" data-id=\"ffad684\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-99cabdb elementor-widget elementor-widget-text-editor\" data-id=\"99cabdb\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"><div class=\"elementor-widget-container\"><div class=\"elementor-text-editor elementor-clearfix\"><p align=\"left\"><span style=\"font-size: medium;\">This method is currently configured to save every 5 epochs. This can be adjusted with the parameter, <\/span><span style=\"font-size: medium;\"><i>interval<\/i><\/span><span style=\"font-size: medium;\">. Frequently saving your model is a good way to track the progress your network is making during the training process.<\/span><\/p><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2557548 elementor-widget elementor-widget-heading\" data-id=\"2557548\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Initializing The DCGAN Class<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ddf6b60 elementor-widget elementor-widget-text-editor\" data-id=\"ddf6b60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-9ae89c4 elementor-widget elementor-widget-text-editor\" data-id=\"9ae89c4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\"><div class=\"elementor-widget-container\"><div class=\"elementor-text-editor elementor-clearfix\"><p align=\"left\"><span style=\"font-size: medium;\">We are now done with creating the DCGAN class and ready to train our Generative Adversarial Network. First, we need to create an instance of the class and assign it to a variable.<\/span><\/p><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d076b05 elementor-widget elementor-widget-text-editor\" data-id=\"d076b05\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In [4]<\/p><div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"n\">dcgan<\/span> <span class=\"o\">=<\/span> <span class=\"n\">DCGAN<\/span><span class=\"p\">()<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-af4c354 elementor-widget elementor-widget-text-editor\" data-id=\"af4c354\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This will initialize the Generator and Discriminator models and print their summaries.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-86a10ff elementor-widget elementor-widget-heading\" data-id=\"86a10ff\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Training The Generative Adversarial Network<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8bc6974 elementor-widget elementor-widget-text-editor\" data-id=\"8bc6974\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">Now that we have our DCGAN class object, we just need to call the <\/span><span style=\"font-size: medium;\"><i>train()<\/i><\/span><span style=\"font-size: medium;\"> method to start training. With this script, you should generally pick a high number of epochs for training and track the loss values throughout the process. If the network starts collapsing, then stop the training early and check the generated samples to figure out which model was the best performing one.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">The train() method returns two arrays containing the loss values of the two models throughout training. We will assign these values to <\/span><span style=\"font-size: medium;\"><i>g_loss<\/i><\/span><span style=\"font-size: medium;\">, and <\/span><span style=\"font-size: medium;\"><i>d_loss<\/i><\/span><span style=\"font-size: medium;\"> and plot them.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9bfc492 elementor-widget elementor-widget-text-editor\" data-id=\"9bfc492\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In [5]<\/p><div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"n\">g_loss<\/span><span class=\"p\">,<\/span> <span class=\"n\">d_loss<\/span> <span class=\"o\">=<\/span> <span class=\"n\">dcgan<\/span><span class=\"o\">.<\/span><span class=\"n\">train<\/span><span class=\"p\">(<\/span><span class=\"n\">epochs<\/span><span class=\"o\">=<\/span><span class=\"n\">epoch<\/span><span class=\"p\">,<\/span> <span class=\"n\">batch_size<\/span><span class=\"o\">=<\/span><span class=\"n\">batch<\/span><span class=\"p\">,<\/span> <span class=\"n\">save_interval<\/span><span class=\"o\">=<\/span><span class=\"n\">interval<\/span><span class=\"p\">)<\/span>\n<\/pre><\/div><\/div><\/div><\/div><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt\">\u00a0<\/div><div class=\"output_subarea output_stream output_stdout output_text\"><pre>1 [D loss: 0.640689, acc.: 59.37%] [G loss: 0.967596]\n2 [D loss: 0.575859, acc.: 73.34%] [G loss: 1.787223]\n3 [D loss: 0.656025, acc.: 61.31%] [G loss: 1.042790]\n4 [D loss: 0.656616, acc.: 60.19%] [G loss: 0.998186]\n5 [D loss: 0.674997, acc.: 56.04%] [G loss: 0.893507]\n<\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e25825e elementor-widget elementor-widget-heading\" data-id=\"e25825e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Plot Loss<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-016838f elementor-widget elementor-widget-text-editor\" data-id=\"016838f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In [6]<\/p><div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">plot<\/span><span class=\"p\">(<\/span><span class=\"n\">g_loss<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">plot<\/span><span class=\"p\">(<\/span><span class=\"n\">d_loss<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">title<\/span><span class=\"p\">(<\/span><span class=\"s1\">'GAN Loss'<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">ylabel<\/span><span class=\"p\">(<\/span><span class=\"s1\">'Loss'<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">xlabel<\/span><span class=\"p\">(<\/span><span class=\"s1\">'Epoch'<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">legend<\/span><span class=\"p\">([<\/span><span class=\"s1\">'Generator'<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'Discriminator'<\/span><span class=\"p\">],<\/span> <span class=\"n\">loc<\/span><span class=\"o\">=<\/span><span class=\"s1\">'upper left'<\/span><span class=\"p\">)<\/span>\n<span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">show<\/span><span class=\"p\">()<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3eec53b elementor-widget elementor-widget-html\" data-id=\"3eec53b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/fgnFEHq.png\" alt=\"DLSS Example 2\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-41fec8f elementor-widget elementor-widget-heading\" data-id=\"41fec8f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Analyze Results<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f518091 elementor-widget elementor-widget-text-editor\" data-id=\"f518091\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">Once you have trained a model you are satisfied with, it is time to test your model on various images. You can do this using this <\/span><a href=\"https:\/\/nbviewer.jupyter.org\/github\/vee-upatising\/DLSS\/blob\/master\/Load%20Model%20and%20Analyze%20Results.ipynb\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>provided script<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">. To use this, you must first define a few parameters. Set <\/span><span style=\"font-size: medium;\"><i>input_dimensions <\/i><\/span><span style=\"font-size: medium;\">and <\/span><span style=\"font-size: medium;\"><i>ouput_dimesions <\/i><\/span><span style=\"font-size: medium;\">to the same values you did in the training script. Set <\/span><span style=\"font-size: medium;\"><i>model_path <\/i><\/span><span style=\"font-size: medium;\">to the path of the H5 model you want to use. The H5 models get saved in the folder specified by <\/span><span style=\"font-size: medium;\"><i>model_path <\/i><\/span><span style=\"font-size: medium;\">in the training script during the <\/span><span style=\"font-size: medium;\"><i>save_imgs()<\/i><\/span><span style=\"font-size: medium;\"> method. Set the <\/span><span style=\"font-size: medium;\"><i>dataset_path <\/i><\/span><span style=\"font-size: medium;\">parameter to the folder containing the images you want to test your model on. If the images contain any PNGs, set the <\/span><span style=\"font-size: medium;\"><i>png <\/i><\/span><span style=\"font-size: medium;\">boolean flag to true to remove the alpha layers from the images. To make animated GIFs of your results, place the frames of a video inside the <\/span><span style=\"font-size: medium;\"><i>dataset_path <\/i><\/span><span style=\"font-size: medium;\">folder. Lastly, set the <\/span><span style=\"font-size: medium;\"><i>save_path <\/i><\/span><span style=\"font-size: medium;\">parameter to the folder you want the results of the model inference to be saved to.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f33ce28 elementor-widget elementor-widget-text-editor\" data-id=\"f33ce28\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In [19]<\/p><div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"n\">model<\/span> <span class=\"o\">=<\/span> <span class=\"n\">load_model<\/span><span class=\"p\">(<\/span><span class=\"n\">model_path<\/span><span class=\"p\">)<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a69ecd4 elementor-widget elementor-widget-heading\" data-id=\"a69ecd4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4 class=\"elementor-heading-title elementor-size-default\">Load Images and Super Sample<\/h4>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b8ad4dd elementor-widget elementor-widget-text-editor\" data-id=\"b8ad4dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>In [29]<\/p><div class=\"\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"output_wrapper\"><div class=\"output\"><div class=\"output_area\"><div class=\"prompt output_prompt\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><div class=\"cell border-box-sizing code_cell rendered\"><div class=\"input\"><div class=\"inner_cell\"><div class=\"input_area\"><div class=\" highlight hl-ipython3\"><pre><span class=\"n\">paths<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[]<\/span>\n<span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"mi\">0<\/span>\n\n<span class=\"k\">for<\/span> <span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">d<\/span><span class=\"p\">,<\/span> <span class=\"n\">f<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">walk<\/span><span class=\"p\">(<\/span><span class=\"n\">dataset_path<\/span><span class=\"p\">):<\/span>\n    <span class=\"k\">for<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">f<\/span><span class=\"p\">:<\/span>\n        <span class=\"k\">if<\/span> <span class=\"s1\">'.png'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span> <span class=\"ow\">or<\/span> <span class=\"s1\">'jpg'<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">file<\/span><span class=\"p\">:<\/span>\n            <span class=\"n\">paths<\/span><span class=\"o\">.<\/span><span class=\"n\">append<\/span><span class=\"p\">(<\/span><span class=\"n\">os<\/span><span class=\"o\">.<\/span><span class=\"n\">path<\/span><span class=\"o\">.<\/span><span class=\"n\">join<\/span><span class=\"p\">(<\/span><span class=\"n\">r<\/span><span class=\"p\">,<\/span> <span class=\"n\">file<\/span><span class=\"p\">))<\/span>\n\n<span class=\"k\">for<\/span> <span class=\"n\">path<\/span> <span class=\"ow\">in<\/span> <span class=\"n\">paths<\/span><span class=\"p\">:<\/span>\n    \n    <span class=\"c1\"># Select image<\/span>\n    <span class=\"n\">img<\/span> <span class=\"o\">=<\/span> <span class=\"n\">Image<\/span><span class=\"o\">.<\/span><span class=\"n\">open<\/span><span class=\"p\">(<\/span><span class=\"n\">path<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\">#create plot<\/span>\n    <span class=\"n\">f<\/span><span class=\"p\">,<\/span> <span class=\"n\">axarr<\/span> <span class=\"o\">=<\/span> <span class=\"n\">plt<\/span><span class=\"o\">.<\/span><span class=\"n\">subplots<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"mi\">3<\/span><span class=\"p\">,<\/span><span class=\"n\">figsize<\/span><span class=\"o\">=<\/span><span class=\"p\">(<\/span><span class=\"mi\">15<\/span><span class=\"p\">,<\/span><span class=\"mi\">15<\/span><span class=\"p\">),<\/span><span class=\"n\">gridspec_kw<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"s1\">'width_ratios'<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"n\">super_sampling_ratio<\/span><span class=\"p\">,<\/span><span class=\"n\">super_sampling_ratio<\/span><span class=\"p\">]})<\/span>\n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_xlabel<\/span><span class=\"p\">(<\/span><span class=\"s1\">'Original Image ('<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">'x'<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">')'<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">10<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_xlabel<\/span><span class=\"p\">(<\/span><span class=\"s1\">'Interpolated Image ('<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">'x'<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">')'<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">10<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">set_xlabel<\/span><span class=\"p\">(<\/span><span class=\"s1\">'Super Sampled Image ('<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">'x'<\/span> <span class=\"o\">+<\/span> <span class=\"nb\">str<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">])<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">')'<\/span><span class=\"p\">,<\/span> <span class=\"n\">fontsize<\/span><span class=\"o\">=<\/span><span class=\"mi\">10<\/span><span class=\"p\">)<\/span>\n\n    <span class=\"c1\">#original image<\/span>\n    <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">img<\/span><span class=\"o\">.<\/span><span class=\"n\">resize<\/span><span class=\"p\">((<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]))<\/span>\n    \n    <span class=\"c1\">#interpolated (resized) image<\/span>\n    <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x<\/span><span class=\"o\">.<\/span><span class=\"n\">resize<\/span><span class=\"p\">((<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]))<\/span>\n    \n    \n    <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">y<\/span><span class=\"p\">)<\/span>\n    \n    <span class=\"c1\"># Remove alpha layer if imgaes are PNG<\/span>\n    <span class=\"k\">if<\/span><span class=\"p\">(<\/span><span class=\"n\">png<\/span><span class=\"p\">):<\/span>\n        <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x<\/span><span class=\"p\">[<\/span><span class=\"o\">...<\/span><span class=\"p\">,:<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n        <span class=\"n\">y<\/span> <span class=\"o\">=<\/span> <span class=\"n\">y<\/span><span class=\"p\">[<\/span><span class=\"o\">...<\/span><span class=\"p\">,:<\/span><span class=\"mi\">3<\/span><span class=\"p\">]<\/span>\n    \n    <span class=\"c1\">#plotting first two images<\/span>\n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">imshow<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">imshow<\/span><span class=\"p\">(<\/span><span class=\"n\">y<\/span><span class=\"p\">)<\/span>\n    \n    <span class=\"c1\">#plotting super sampled image<\/span>\n    <span class=\"n\">x<\/span> <span class=\"o\">=<\/span> <span class=\"n\">x<\/span><span class=\"o\">.<\/span><span class=\"n\">reshape<\/span><span class=\"p\">(<\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span><span class=\"n\">input_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span><span class=\"o\">\/<\/span><span class=\"mi\">255<\/span>\n    <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">array<\/span><span class=\"p\">(<\/span><span class=\"n\">model<\/span><span class=\"o\">.<\/span><span class=\"n\">predict_on_batch<\/span><span class=\"p\">(<\/span><span class=\"n\">x<\/span><span class=\"p\">))<\/span><span class=\"o\">*<\/span><span class=\"mi\">255<\/span>\n    <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"o\">.<\/span><span class=\"n\">reshape<\/span><span class=\"p\">(<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">0<\/span><span class=\"p\">],<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">1<\/span><span class=\"p\">],<\/span><span class=\"n\">output_dimensions<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">])<\/span>\n    <span class=\"n\">np<\/span><span class=\"o\">.<\/span><span class=\"n\">clip<\/span><span class=\"p\">(<\/span><span class=\"n\">result<\/span><span class=\"p\">,<\/span> <span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">255<\/span><span class=\"p\">,<\/span> <span class=\"n\">out<\/span><span class=\"o\">=<\/span><span class=\"n\">result<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">result<\/span> <span class=\"o\">=<\/span> <span class=\"n\">result<\/span><span class=\"o\">.<\/span><span class=\"n\">astype<\/span><span class=\"p\">(<\/span><span class=\"s1\">'uint8'<\/span><span class=\"p\">)<\/span>\n                \n    <span class=\"n\">axarr<\/span><span class=\"p\">[<\/span><span class=\"mi\">2<\/span><span class=\"p\">]<\/span><span class=\"o\">.<\/span><span class=\"n\">imshow<\/span><span class=\"p\">(<\/span><span class=\"n\">result<\/span><span class=\"p\">)<\/span>\n    \n    <span class=\"c1\"># Save image<\/span>\n    <span class=\"n\">f<\/span><span class=\"o\">.<\/span><span class=\"n\">savefig<\/span><span class=\"p\">(<\/span><span class=\"n\">save_path<\/span> <span class=\"o\">+<\/span> <span class=\"s1\">'<\/span><span class=\"se\">\\\\<\/span><span class=\"s1\">frame_<\/span><span class=\"si\">%d<\/span><span class=\"s1\">.png'<\/span> <span class=\"o\">%<\/span> <span class=\"n\">count<\/span><span class=\"p\">)<\/span>\n    \n    <span class=\"c1\"># Increment file name counter<\/span>\n    <span class=\"n\">count<\/span> <span class=\"o\">=<\/span> <span class=\"n\">count<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><\/pre><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0910602 elementor-widget elementor-widget-text-editor\" data-id=\"0910602\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">Once you have set these parameters, the script will reshape each image to the size specified by input_dimesions and feed it as input to your model. Then the script will plot the image outputted by your model compared to what the input image would look like interpolated using Nearest Neighbor Interpolation. These generated samples from your model will be saved in the folder specified by the <\/span><span style=\"font-size: medium;\"><i>save_path <\/i><\/span><span style=\"font-size: medium;\">parameter. These samples are a good way to analyze the quality of your model. You can compare the way an image looks before it is inputted to your model, the way it looks after it passes through your model, and the way it looks super sampled using another technique. The results of some of my models are displayed below.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84afd46 elementor-widget elementor-widget-heading\" data-id=\"84afd46\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Results<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a9269f1 elementor-widget elementor-widget-html\" data-id=\"a9269f1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/vee-upatising\/Super-Resolution-GAN\/master\/edited.png\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d9b3f9a elementor-widget elementor-widget-html\" data-id=\"d9b3f9a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/camo.githubusercontent.com\/90b35081bff22422acc253f60ddcf376719a980362f27ccb616f4ab649728d4c\/68747470733a2f2f7665652d757061746973696e672e6769746875622e696f2f696d616765732f666c69702e676966\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d011ab4 elementor-widget elementor-widget-html\" data-id=\"d011ab4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/SoSyPkU.jpeg\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f164ddf elementor-widget elementor-widget-html\" data-id=\"f164ddf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/GBrS5ff.jpeg\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-115bce6 elementor-widget elementor-widget-html\" data-id=\"115bce6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/sbFXqZE.jpeg\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-54f4db6 elementor-widget elementor-widget-html\" data-id=\"54f4db6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<center><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/7ugON97.jpeg\" alt=\"DLSS Example 1\"><\/center>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-21d78ec elementor-widget elementor-widget-heading\" data-id=\"21d78ec\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e16f112 elementor-widget elementor-widget-text-editor\" data-id=\"e16f112\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p align=\"left\"><span style=\"font-size: medium;\">This article provides you with a general framework of training a DLSS Generative Adversarial Network using Keras. You will be able to create your own DLSS models for various resolutions with your own datasets using this script. The full version of this code can be found <\/span><a href=\"https:\/\/nbviewer.jupyter.org\/github\/vee-upatising\/DLSS\/blob\/master\/DLSS%20GAN%20Training.ipynb\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>here<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\">.<\/span><\/p><p align=\"left\"><span style=\"font-size: medium;\">Once you have trained a model you are satisfied with, you can use <\/span><a href=\"https:\/\/nbviewer.jupyter.org\/github\/vee-upatising\/DLSS\/blob\/master\/Load%20Model%20and%20Analyze%20Results.ipynb\" target=\"_blank\" rel=\"noopener\"><span style=\"color: #1155cc;\"><span style=\"font-size: medium;\"><u>this script<\/u><\/span><\/span><\/a><span style=\"font-size: medium;\"> to generate outputs and analyze your results. The script will also provide you with code to create GIFs of super sampled video frames.<\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1f4ce09 elementor-section-content-middle elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"1f4ce09\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-94ae73f\" data-id=\"94ae73f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5137a55 elementor-widget elementor-widget-heading\" data-id=\"5137a55\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Github<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-674f574 elementor-align-left elementor-widget elementor-widget-button\" data-id=\"674f574\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-lg elementor-animation-grow\" href=\"https:\/\/github.com\/vee-upatising\/DLSS\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fab fa-github\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">VIew<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a874fd3 elementor-widget elementor-widget-heading\" data-id=\"a874fd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Veri k\u00fcmesi<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ae6256c elementor-align-left elementor-widget elementor-widget-button\" data-id=\"ae6256c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-lg elementor-animation-grow\" href=\"https:\/\/www.kaggle.com\/akhileshdkapse\/super-image-resolution\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-database\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">VIew<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4de55a9 elementor-widget elementor-widget-heading\" data-id=\"4de55a9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">Jupyter Notebook<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-48cb46c elementor-align-left elementor-widget elementor-widget-button\" data-id=\"48cb46c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-lg elementor-animation-grow\" href=\"https:\/\/nbviewer.jupyter.org\/github\/vee-upatising\/DLSS\/tree\/master\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-sticky-note\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">VIew<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Deep Learning Super Sampling Using Generative Adversarial Networks T\u00fcrk\u00e7e This article will provide you with a general framework of a DLSS Generative Adversarial Network written&hellip;<\/p>","protected":false},"author":1,"featured_media":2202,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-2151","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-en"],"_links":{"self":[{"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/posts\/2151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/comments?post=2151"}],"version-history":[{"count":0,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/posts\/2151\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/media\/2202"}],"wp:attachment":[{"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/media?parent=2151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/categories?post=2151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aix.web.tr\/en\/wp-json\/wp\/v2\/tags?post=2151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}