diff --git a/modules/deeplearning/cloud_fraction_fcn_abi.py b/modules/deeplearning/cloud_fraction_fcn_abi.py
index 63bce62f7c42f11669775fc87f0b618b6bae87b3..3e7008d7055b627e3cdc94916274b2c5bb4ce71e 100644
--- a/modules/deeplearning/cloud_fraction_fcn_abi.py
+++ b/modules/deeplearning/cloud_fraction_fcn_abi.py
@@ -186,6 +186,32 @@ def get_label_data_5cat(grd_k):
     return s
 
 
+def get_label_data_8cat(grd_k):
+    grd_k = np.where(np.isnan(grd_k), 0, grd_k)
+    grd_k = np.where(grd_k < 0.5, 0, 1)
+
+    s = grd_k[:, 0::4, 0::4] + grd_k[:, 1::4, 0::4] + grd_k[:, 2::4, 0::4] + grd_k[:, 3::4, 0::4] + \
+        grd_k[:, 0::4, 1::4] + grd_k[:, 1::4, 1::4] + grd_k[:, 2::4, 1::4] + grd_k[:, 3::4, 1::4] + \
+        grd_k[:, 0::4, 2::4] + grd_k[:, 1::4, 2::4] + grd_k[:, 2::4, 2::4] + grd_k[:, 3::4, 2::4] + \
+        grd_k[:, 0::4, 3::4] + grd_k[:, 1::4, 3::4] + grd_k[:, 2::4, 3::4] + grd_k[:, 3::4, 3::4]
+
+    cat_0 = np.logical_and(s >= 0, s < 1)  # CLDY
+    cat_1 = np.logical_and(s >= 1, s < 4)
+    cat_2 = np.logical_and(s >= 4, s < 6)
+    cat_3 = np.logical_and(s >= 6, s < 9)
+    cat_4 = np.logical_and(s >= 9, s < 11)
+    cat_5 = np.logical_and(s >= 11, s < 14)
+    cat_6 = np.logical_and(s >= 14, s <= 15)
+    cat_7 = np.logical_and(s > 15, s <= 16)  # CLR
+
+    s[cat_0] = 0
+    s[cat_1] = 1
+    s[cat_2] = 2
+    s[cat_3] = 3
+    s[cat_4] = 4
+
+    return s
+
 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)