diff --git a/4_Resnet_Solar_panel_defect_Identification/model.py b/4_Resnet_Solar_panel_defect_Identification/model.py
new file mode 100644
index 0000000000000000000000000000000000000000..8bbb8835a739a718dba67f81238601ae3915402d
--- /dev/null
+++ b/4_Resnet_Solar_panel_defect_Identification/model.py
@@ -0,0 +1,75 @@
+import torch.nn as nn
+import torch
+import torch.nn.functional as F
+
+
+class ResBlock(nn.Module):
+
+    def __init__(self,in_channels,out_channels,stride):
+        super(ResBlock,self).__init__()
+
+        self.in_ch = in_channels
+        self.out_ch = out_channels
+        self.s = stride
+
+        self.block = nn.Sequential(nn.Conv2d(self.in_ch,self.out_ch,stride=self.s,kernel_size=3,padding=1),
+                                   nn.BatchNorm2d(self.out_ch), nn.ReLU(inplace=True),
+
+                                   nn.Conv2d(self.out_ch, self.out_ch, kernel_size=3, padding=1),
+                                   nn.BatchNorm2d(self.out_ch))
+
+        self.skip_connection = nn.Sequential(nn.Conv2d(self.in_ch,self.out_ch,stride=self.s,kernel_size=1),
+                                             nn.BatchNorm2d(self.out_ch))
+
+    def forward(self,x):
+
+        skip = x.clone()
+
+        x1 = self.block(x)
+        x2 = self.skip_connection(skip)
+        op = F.relu(x1+x2)
+        return op
+
+
+class ResNet(nn.Module):
+
+    def __init__(self):
+        super(ResNet, self).__init__()
+
+        self.conv0 = nn.Sequential(nn.Conv2d(in_channels=3,out_channels=64,kernel_size=7,stride=2),
+                                   nn.BatchNorm2d(64), nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=3,stride=2))
+        self.block1 = ResBlock(64,64,1)
+        self.block2 = ResBlock(64,128,2)
+        self.block3 = ResBlock(128,256,2)
+        self.block4 = ResBlock(256,512,2)
+
+        self.GlobalAvgPool = nn.AvgPool2d(kernel_size=10)
+        self.flatten = nn.Flatten()
+        self.lin = nn.Linear(512,2)
+        self.sig = nn.Sigmoid()
+
+    def forward(self,x):
+
+        x1 = self.conv0(x)
+        x2 = self.block1.forward(x1)
+        x3 = self.block2.forward(x2)
+        x4 = self.block3.forward(x3)
+        x5 = self.block4.forward(x4)
+
+        x5 = self.GlobalAvgPool(x5)
+        x5 = self.flatten(x5)
+        x5 = self.lin(x5)
+        op = self.sig(x5)
+
+        return op
+
+
+
+
+
+
+
+
+
+
+