diff --git a/3_RNN/Constraints.py b/3_RNN/Constraints.py
new file mode 100644
index 0000000000000000000000000000000000000000..662b57ae2a9aac555815e0f8f8d6a0412793243a
--- /dev/null
+++ b/3_RNN/Constraints.py
@@ -0,0 +1,37 @@
+import numpy as np
+from numpy import linalg as LA
+
+
+class L2_Regularizer:
+    def __init__(self, alpha):
+        self.regularization_weight = alpha
+        self.norm_enhanced_loss = None
+        self.alpha_weight = None
+
+    def calculate_gradient(self, weights):
+        self.alpha_weight = self.regularization_weight * weights
+        return self.alpha_weight
+
+    def norm(self, weights):
+        sqr_val = np.square(weights)
+        sum_tot = np.sum(sqr_val)
+        self.norm_enhanced_loss = self.regularization_weight* sum_tot
+        return self.norm_enhanced_loss
+
+
+class L1_Regularizer:
+    def __init__(self, alpha):
+        self.regularization_weight = alpha
+        self.norm_enhanced_loss = None
+        self.alpha_weight = None
+
+    def calculate_gradient(self, weights):
+        self.alpha_weight = self.regularization_weight * np.sign(weights)
+        return self.alpha_weight
+
+    def norm(self, weights):
+        abs_val = np.absolute(weights)
+        sum_tot= np.sum(abs_val)
+        weight_matrix_norm = sum_tot
+        self.norm_enhanced_loss = self.regularization_weight * weight_matrix_norm
+        return self.norm_enhanced_loss