Hi,
I have short reads of DNA sequence of length 48 which is composed of four DNA nucleotides (“A”, “T”, “C”, “G”). So the problem I am working on is a binary classification problem to distinguish between the sequences that belong to Class I and others belong to Class II. My model is based on a one layer of conv1D and 2-3 fully connected layers. During training, I keep getting almost constant training accuracy/training loss and validation accuracy/validation loss. I would appreciate your help a lot. Below is code that I am running.
class CNNNet(nn.Module):
#def __init__(self, input_size, hidden_size, num_layers, d_out):
def __init__(self, voc_size, emb_dim, d_out):
super(CNNNet,self).__init__()
self.voc_size = voc_size
self.emb_dim = emb_dim
self.d_out = d_out
self.embedding = nn.Embedding(self.voc_size, self.emb_dim)
self.cnn1 = nn.Conv1d(in_channels=35, out_channels=128, kernel_size=11)
self.maxpool1 = nn.MaxPool1d(kernel_size=5, stride=1)
self.fc1 = nn.Linear(4352, 2048)
self.fc2 = nn.Linear(2048, 1024)
self.fc3 = nn.Linear(1024, 256)
self.fc4 = nn.Linear(256, 64)
self.fc5 = nn.Linear(64, 1)
self.relu = nn.LeakyReLU()
self.sigmoid = nn.Sigmoid()
self.dropout = nn.Dropout(self.d_out)
def forward(self, x):
embeds = self.embedding(x)
embeds = embeds.view(embeds.shape[0], embeds.shape[2], embeds.shape[1])
cnn_layer1 = self.relu(self.cnn1(embeds))
mpool1 = self.maxpool1(cnn_layer1)
x = mpool1.view(mpool1.size(0), -1)
out = self.relu(self.dropout(self.fc1(x)))
out = self.relu(self.dropout(self.fc2(out)))
out = self.relu(self.dropout(self.fc3(out)))
out = self.relu(self.dropout(self.fc4(out)))
out = self.sigmoid(self.relu((self.fc5(out))))
return (out)
Here is the progress of training
Epoch: 0 /Loss is: 35.44 /Acc: 0.499 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 1 /Loss is: 49.983 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 2 /Loss is: 49.983 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 3 /Loss is: 49.983 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 4 /Loss is: 49.98 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 5 /Loss is: 49.986 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 6 /Loss is: 49.985 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 7 /Loss is: 49.99 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 8 /Loss is: 49.98 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 9 /Loss is: 49.983 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 10 /Loss is: 49.98 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 11 /Loss is: 49.987 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 12 /Loss is: 49.984 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 13 /Loss is: 49.987 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5
Epoch: 14 /Loss is: 49.98 /Acc: 0.5 /Val_Loss: 50.0 / Val Acc: 0.5