CNN- Classification


if float(float(idx))>60 and float(idx)<=70:

  cl = 0
 if float(idx)>70 and float(idx)<=80:
  cl = 1
 if float(idx)>80 and float(idx)<=90:
  cl = 2
 if float(idx)>90 and float(idx)<=100:
  cl = 3
 if float(idx)>100 and float(idx)<=110:
  cl = 4
 if float(idx)>110 and float(idx)<=120:
  cl = 5
 if float(idx)>120 and float(idx)<=130:
  cl = 6


Skeleton 1:

class ConvNet(nn.Module):
    def __init__(self, num_classes=7):
        super(ConvNet, self).__init__()
        self.layer1 = nn.Sequential(
            nn.Conv2d(1, 16,kernel_size=2, stride=1, padding=1),
            nn.BatchNorm2d(16),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2, stride=1))
        self.layer2 = nn.Sequential(
            nn.Conv2d(16, 32, kernel_size=2, stride=1, padding=1),
            nn.BatchNorm2d(32),
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2, stride=1))
        self.fc1 = nn.Linear(64000, 32)
        self.fc2 = nn.Linear(32, 7)
        #self.sm = nn.Softmax()

        
    def forward(self, x):
        out = self.layer1(x)
        #print(out.shape)
        out = self.layer2(out)
        #print(out.shape)
        out = out.reshape(out.size(0), -1)
        #print(out.shape)
        out = self.fc1(out)
        out = self.fc2(out)
        #out = self.sm(out)
        return out

CE loss

OUTPUT:

Epoch [11/20], Step [3800/4010], Loss: 0.0124
Epoch [11/20], Step [3900/4010], Loss: 0.4609
Epoch [11/20], Step [4000/4010], Loss: 0.0170

Train Accuracy : 95 %
Validation Accuracy : 24 %

Skeleton 2:

filter 4 -8:

Epoch [20/20], Step [4000/4010], Loss: 0.0000
Train Accuracy : 94 %
Validation Accuracy : 23 %

Skeleton 3 :

with dropout of 0.3 after each layer:

Epoch [20/20], Step [4000/4010], Loss: 0.0538
Train Accuracy : 63 %
Validation Accuracy : 23 %