Diff of /neural.py [000000] .. [6536f9]

Switch to side-by-side view

--- a
+++ b/neural.py
@@ -0,0 +1,145 @@
+import torch 
+from torch import nn
+
+class DeepECG(nn.Module):
+    
+    def __init__(self, input_shape: int, hidden_units: int, output_shape: int, final):
+        super().__init__()
+        self.block_1 = nn.Sequential(
+            nn.Conv1d(in_channels=input_shape, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.MaxPool1d(kernel_size=1,
+                         stride=2)
+        )
+        self.block_2 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+            nn.MaxPool1d(kernel_size=1,
+                         stride=2)
+        )
+        self.block_3 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.MaxPool1d(kernel_size=3,
+                         stride=2)
+        )
+        self.block_4 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3, 
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+        )
+        self.block_5 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units,
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU()
+        )
+        self.block_6 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+            nn.Dropout(0.5)
+        )
+
+        self.classifier = nn.Sequential(
+            nn.Flatten(),
+            nn.Linear(in_features=final, out_features=output_shape),
+        )
+        
+    def forward(self, x: torch.Tensor):
+        x = self.block_1(x)
+        x = self.block_2(x)
+        x = self.block_3(x)
+        x = self.block_4(x)
+        x = self.block_5(x)
+        x = self.block_6(x)
+        x = self.classifier(x)
+        return x
+    
+
+class DeepECG_DUMMY(nn.Module):
+    
+    def __init__(self, input_shape: int, hidden_units: int, output_shape: int):
+        super().__init__()
+        self.block_1 = nn.Sequential(
+            nn.Conv1d(in_channels=input_shape, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.MaxPool1d(kernel_size=1,
+                         stride=2)
+        )
+        self.block_2 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+            nn.MaxPool1d(kernel_size=1,
+                         stride=2)
+        )
+        self.block_3 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.MaxPool1d(kernel_size=3,
+                         stride=2)
+        )
+        self.block_4 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3, 
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+        )
+        self.block_5 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units,
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU()
+        )
+        self.block_6 = nn.Sequential(
+            nn.Conv1d(in_channels=hidden_units, 
+                      out_channels=hidden_units,
+                      kernel_size=3,
+                      stride=1),
+            nn.ReLU(),
+            nn.LocalResponseNorm(size=5, alpha=0.0002, beta=0.75, k=1.0),
+            nn.Dropout(0.5)
+        )
+
+        
+        
+    def forward(self, x: torch.Tensor):
+        x = self.block_1(x)
+        x = self.block_2(x)
+        x = self.block_3(x)
+        x = self.block_4(x)
+        x = self.block_5(x)
+        x = self.block_6(x)
+        a = x.shape[1]
+        b = x.shape[2]
+        return a*b