diff --git a/modules/deeplearning/cnn_cld_frac.py b/modules/deeplearning/cnn_cld_frac.py index 452751008834b9b9a8a7d3ae46a0d49829bc972b..6c36a4d19948d5f911e2c541a5ae948e902b7102 100644 --- a/modules/deeplearning/cnn_cld_frac.py +++ b/modules/deeplearning/cnn_cld_frac.py @@ -62,7 +62,7 @@ IMG_DEPTH = 1 # label_param = 'cld_opd_dcomp' label_param = 'cloud_probability' -params = ['temp_11_0um_nom', 'temp_12_0um_nom', 'refl_0_65um_nom', label_param] +params = ['temp_11_0um_nom', 'refl_0_65um_nom', label_param] data_params_half = ['temp_11_0um_nom'] data_params_full = ['refl_0_65um_nom'] @@ -175,46 +175,35 @@ def upsample(tmp): return tmp -def upsample_nearest(tmp): - bsize = tmp.shape[0] - tmp_2 = tmp[:, slc_y_2, slc_x_2] - up = np.zeros(bsize, t.size, s.size) - for k in range(bsize): - for j in range(t.size/2): - for i in range(s.size/2): - up[k, j, i] = tmp_2[k, j, i] - up[k, j, i+1] = tmp_2[k, j, i] - up[k, j+1, i] = tmp_2[k, j, i] - up[k, j+1, i+1] = tmp_2[k, j, i] - return up - - def get_label_data(grd_k): grd_k = np.where(np.isnan(grd_k), 0, grd_k) - grd_k = np.where(grd_k < 0.5, 0, 1) + # grd_k = np.where(grd_k < 0.5, 0, 1) a = grd_k[:, 0::2, 0::2] b = grd_k[:, 1::2, 0::2] c = grd_k[:, 0::2, 1::2] d = grd_k[:, 1::2, 1::2] s_t = a + b + c + d - #s_t = np.where(s_t == 0, 0, s_t) - #s_t = np.where(s_t == 1, 1, s_t) - #s_t = np.where(s_t == 2, 1, s_t) - #s_t = np.where(s_t == 3, 1, s_t) - #s_t = np.where(s_t == 4, 2, s_t) + # s_t = np.where(s_t == 0, 0, s_t) + # s_t = np.where(s_t == 1, 1, s_t) + # s_t = np.where(s_t == 2, 1, s_t) + # s_t = np.where(s_t == 3, 1, s_t) + # s_t = np.where(s_t == 4, 2, s_t) s_t /= 4.0 - return s_t + blen, ylen, xlen = s_t.shape + s_t = s_t.flatten() + cat_0 = np.logical_and(s_t >= 0.0, s_t < 0.2) + cat_1 = np.logical_and(s_t >= 0.2, s_t < 0.8) + cat_2 = np.logical_and(s_t >= 0.8, s_t <= 1.0) + s_t[cat_0] = 0 + s_t[cat_1] = 1 + s_t[cat_2] = 2 -# def get_label_data(grd_k): -# grd_k = np.where(np.isnan(grd_k), 0, grd_k) -# grd_k = np.where((grd_k >= 0.0) & (grd_k < 0.3), 0, grd_k) -# grd_k = np.where((grd_k >= 0.3) & (grd_k < 0.7), 1, grd_k) -# grd_k = np.where((grd_k >= 0.7) & (grd_k <= 1.0), 2, grd_k) -# -# return grd_k + s_t = s_t.reshape((blen, ylen, xlen)) + + return s_t class SRCNN: @@ -555,10 +544,10 @@ class SRCNN: # self.loss = tf.keras.losses.MeanAbsoluteError() # Regression # decayed_learning_rate = learning_rate * decay_rate ^ (global_step / decay_steps) - initial_learning_rate = 0.005 + initial_learning_rate = 0.006 decay_rate = 0.95 steps_per_epoch = int(self.num_data_samples/BATCH_SIZE) # one epoch - decay_steps = int(steps_per_epoch) + decay_steps = int(steps_per_epoch) * 4 print('initial rate, decay rate, steps/epoch, decay steps: ', initial_learning_rate, decay_rate, steps_per_epoch, decay_steps) self.learningRateSchedule = tf.keras.optimizers.schedules.ExponentialDecay(initial_learning_rate, decay_steps, decay_rate)