From 4c2b4a1a95399d9714510fa0c31babd7ba117ee1 Mon Sep 17 00:00:00 2001
From: Falguni Ghosh <falguni.ghosh@fau.de>
Date: Sun, 15 Oct 2023 21:12:30 +0000
Subject: [PATCH] Upload New File

---
 3_RNN/Dropout.py | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)
 create mode 100644 3_RNN/Dropout.py

diff --git a/3_RNN/Dropout.py b/3_RNN/Dropout.py
new file mode 100644
index 0000000..d044903
--- /dev/null
+++ b/3_RNN/Dropout.py
@@ -0,0 +1,32 @@
+from .Base import BaseLayer
+import numpy as np
+
+
+class Dropout(BaseLayer):
+
+    def __init__(self, probability):
+        super().__init__()
+        self.probability = probability
+        self.input_tensor_shape = None
+        self.output_tensor = None
+        self.dropout_mask = None
+        self.error_tensor = None
+        self.output_error_tensor = None
+
+    def forward(self, input_tensor):
+        if not self.testing_phase:
+            self.input_tensor_shape = np.shape(input_tensor)
+            self.dropout_mask = np.random.uniform(0, 1, self.input_tensor_shape) < self.probability
+            output_tensor = self.dropout_mask * input_tensor * np.float(1 / self.probability)
+            self.output_tensor = output_tensor
+            return self.output_tensor.copy()
+        else:
+            self.output_tensor = input_tensor
+            return self.output_tensor.copy()
+
+    def backward(self, error_tensor):
+        self.error_tensor = np.copy(error_tensor)
+        # output_error_tensor = np.ones(self.input_tensor_shape)
+        self.output_error_tensor = error_tensor * self.dropout_mask * np.float(1 / self.probability)
+        return self.output_error_tensor.copy()
+
-- 
GitLab