From 3c2f1b3302d92f754d45dc776fd4001bffc2bbbc Mon Sep 17 00:00:00 2001
From: tomrink <rink@ssec.wisc.edu>
Date: Mon, 24 Oct 2022 13:25:01 -0500
Subject: [PATCH] snapshot...

---
 modules/deeplearning/icing_fcn.py | 46 +++++++++++++++++++++++--------
 1 file changed, 35 insertions(+), 11 deletions(-)

diff --git a/modules/deeplearning/icing_fcn.py b/modules/deeplearning/icing_fcn.py
index 8cec3080..c8f4d4b4 100644
--- a/modules/deeplearning/icing_fcn.py
+++ b/modules/deeplearning/icing_fcn.py
@@ -557,7 +557,7 @@ class IcingIntensityFCN:
 
         self.get_evaluate_dataset(idxs)
 
-    def build_cnn(self):
+    def build_cnn(self, do_drop_out=False, do_batch_norm=True, drop_rate=0.5):
         print('build_cnn')
         # padding = "VALID"
         padding = "SAME"
@@ -578,12 +578,18 @@ class IcingIntensityFCN:
 
         conv = tf.keras.layers.Conv2D(num_filters, kernel_size=5, strides=1, padding=padding, activation=activation)(conv)
         conv = tf.keras.layers.MaxPool2D(padding=padding)(conv)
-        conv = tf.keras.layers.BatchNormalization()(conv)
+        if do_drop_out:
+            conv = tf.keras.layers.Dropout(drop_rate)(conv)
+        if do_batch_norm:
+            conv = tf.keras.layers.BatchNormalization()(conv)
         print(conv.shape)
 
         skip = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=None)(skip)
         skip = tf.keras.layers.MaxPool2D(padding=padding)(skip)
-        skip = tf.keras.layers.BatchNormalization()(skip)
+        if do_drop_out:
+            skip = tf.keras.layers.Dropout(drop_rate)(skip)
+        if do_batch_norm:
+            skip = tf.keras.layers.BatchNormalization()(skip)
 
         conv = conv + skip
         conv = tf.keras.layers.LeakyReLU()(conv)
@@ -594,12 +600,18 @@ class IcingIntensityFCN:
         num_filters *= 2
         conv = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=activation)(conv)
         conv = tf.keras.layers.MaxPool2D(padding=padding)(conv)
-        conv = tf.keras.layers.BatchNormalization()(conv)
+        if do_drop_out:
+            conv = tf.keras.layers.Dropout(drop_rate)(conv)
+        if do_batch_norm:
+            conv = tf.keras.layers.BatchNormalization()(conv)
         print(conv.shape)
 
         skip = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=None)(skip)
         skip = tf.keras.layers.MaxPool2D(padding=padding)(skip)
-        skip = tf.keras.layers.BatchNormalization()(skip)
+        if do_drop_out:
+            skip = tf.keras.layers.Dropout(drop_rate)(skip)
+        if do_batch_norm:
+            skip = tf.keras.layers.BatchNormalization()(skip)
 
         conv = conv + skip
         conv = tf.keras.layers.LeakyReLU()(conv)
@@ -610,12 +622,18 @@ class IcingIntensityFCN:
         num_filters *= 2
         conv = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=activation)(conv)
         conv = tf.keras.layers.MaxPool2D(padding=padding)(conv)
-        conv = tf.keras.layers.BatchNormalization()(conv)
+        if do_drop_out:
+            conv = tf.keras.layers.Dropout(drop_rate)(conv)
+        if do_batch_norm:
+            conv = tf.keras.layers.BatchNormalization()(conv)
         print(conv.shape)
 
         skip = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=None)(skip)
         skip = tf.keras.layers.MaxPool2D(padding=padding)(skip)
-        skip = tf.keras.layers.BatchNormalization()(skip)
+        if do_drop_out:
+            skip = tf.keras.layers.Dropout(drop_rate)(skip)
+        if do_batch_norm:
+            skip = tf.keras.layers.BatchNormalization()(skip)
 
         conv = conv + skip
         conv = tf.keras.layers.LeakyReLU()(conv)
@@ -625,12 +643,18 @@ class IcingIntensityFCN:
         num_filters *= 2
         conv = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=activation)(conv)
         conv = tf.keras.layers.MaxPool2D(padding=padding)(conv)
-        conv = tf.keras.layers.BatchNormalization()(conv)
+        if do_drop_out:
+            conv = tf.keras.layers.Dropout(drop_rate)(conv)
+        if do_batch_norm:
+            conv = tf.keras.layers.BatchNormalization()(conv)
         print(conv.shape)
 
         skip = tf.keras.layers.Conv2D(num_filters, kernel_size=3, strides=1, padding=padding, activation=None)(skip)
         skip = tf.keras.layers.MaxPool2D(padding=padding)(skip)
-        skip = tf.keras.layers.BatchNormalization()(skip)
+        if do_drop_out:
+            skip = tf.keras.layers.Dropout(drop_rate)(skip)
+        if do_batch_norm:
+            skip = tf.keras.layers.BatchNormalization()(skip)
 
         conv = conv + skip
         conv = tf.keras.layers.LeakyReLU()(conv)
@@ -651,9 +675,9 @@ class IcingIntensityFCN:
 
         conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_2', padding=padding)
 
-        # conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_3', padding=padding)
+        conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_3', padding=padding)
 
-        # conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_4', padding=padding)
+        conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_4', padding=padding)
 
         # conv = build_residual_block_1x1(conv, num_filters, activation, 'Residual_Block_5', padding=padding)
 
-- 
GitLab