zydfx/Audio_Classification
0
1import torch.nn as nn2 3class Conv1DNet(nn.Module):4 def __init__(self):5 super(Conv1DNet, self).__init__()6 7 # First Conv1D layer8 self.conv1 = nn.Conv1d(in_channels=1, out_channels=8, kernel_size=13, stride=1, padding=1)9 self.relu1 = nn.LeakyReLU(negative_slope=0.01)10 self.pool1 = nn.MaxPool1d(kernel_size=3)11 self.dropout1 = nn.Dropout(p=0.2)12 13 # Second Conv1D layer14 self.conv2 = nn.Conv1d(in_channels=8, out_channels=16, kernel_size=11, stride=1, padding=1)15 self.relu2 = nn.LeakyReLU(negative_slope=0.01)16 self.pool2 = nn.MaxPool1d(kernel_size=3)17 self.dropout2 = nn.Dropout(p=0.2)18 19 # Third Conv1D layer20 self.conv3 = nn.Conv1d(in_channels=16, out_channels=32, kernel_size=9, stride=1, padding=1)21 self.relu3 = nn.LeakyReLU(negative_slope=0.01)22 self.pool3 = nn.MaxPool1d(kernel_size=3)23 self.dropout3 = nn.Dropout(p=0.2)24 # forth Conv1D layer25 self.conv4 = nn.Conv1d(in_channels=32, out_channels=64, kernel_size=7, stride=1, padding=1)26 self.relu4 = nn.LeakyReLU(negative_slope=0.01)27 self.pool4 = nn.MaxPool1d(kernel_size=3)28 self.dropout4 = nn.Dropout(p=0.2)29 30 31 # Fully connected layer32 self.fc1 = nn.Linear(in_features=6144, out_features=2418)33 self.fc2 = nn.Linear(in_features=2418, out_features=256)34 self.fc3 = nn.Linear(in_features=256, out_features=10)35 36 def forward(self, x):37 # Pass the input through each layer38 batch_size=x.size(0)39 #print(x.size())40 #print(x)41 x = self.conv1(x)42 x = self.relu1(x)43 #print(x.size())44 x = self.pool1(x)45 x = self.dropout1(x)46 x = self.conv2(x)47 x = self.relu2(x)48 x = self.pool2(x)49 x = self.dropout2(x)50 x = self.conv3(x)51 x = self.relu3(x)52 x = self.pool3(x)53 x = self.dropout3(x)54 x = self.conv4(x)55 x = self.relu4(x)56 x = self.pool4(x)57 x = self.dropout4(x)58 #print(x.size(0))59 x = x.view(batch_size, -1)60 x = self.fc1(x)61 x = self.fc2(x)62 x = self.fc3(x)63 return x