diff --git a/modules/deeplearning/icing_fcn.py b/modules/deeplearning/icing_fcn.py index 8cec308008d7d2e57309487243a6266354dc693d..c8f4d4b4493d916d7ca0ff21465e4b6873324f42 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)