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

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

diff --git a/3_RNN/Loss.py b/3_RNN/Loss.py
new file mode 100644
index 0000000..e6c337a
--- /dev/null
+++ b/3_RNN/Loss.py
@@ -0,0 +1,30 @@
+import numpy as np
+
+
+class CrossEntropyLoss:
+
+    def __init__(self):
+        self.prediction_tensor = None
+
+    def forward(self, prediction_tensor, label_tensor):
+        loss = 0
+
+        a = prediction_tensor * label_tensor
+        for i in range(a.shape[0]):
+            #print(a[i])
+            loss = loss + (-np.log(np.sum(a[i]) + np.finfo(float).eps))
+            #print(loss)
+            #prediction_tensor_i = prediction_tensor[i, :]
+            #relevant_prediction_tensor_i = prediction_tensor[i, :][label_tensor[i, :] == 1]
+            #print(relevant_prediction_tensor_i)
+            #loss = loss - np.sum(np.log(relevant_prediction_tensor_i + epsilon))
+
+        self.prediction_tensor = np.copy(prediction_tensor)
+        return loss
+
+    def backward(self, label_tensor):
+
+        error_tensor = np.empty(label_tensor.shape)
+        for i in range(label_tensor.shape[0]):
+            error_tensor[i] = - label_tensor[i]/(self.prediction_tensor[i])
+        return error_tensor
-- 
GitLab