Remove the self.relu and self.dropout usage from the output and return the output of self.fc5 instead.
Also, check that this view operation is right, as you might be interleaving the tensor:
embeds = embeds.view(embeds.shape[0], embeds.shape[2], embeds.shape[1])

If you want to swap axes, use permute.
This code trying to overfit a random data sample fails using your model but works after the proposed changes were made:
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.permute(0, 2, 1).contiguous()
        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.fc5(out)
        return (out)
    
model = CNNNet(10, 35, 0.5)
x = torch.randint(0, 10, (64, 48))
target = torch.randint(0, 2, (64, 1)).float()
criterion = nn.BCEWithLogitsLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=1e-3)

for epoch in range(100):
    optimizer.zero_grad()
    out = model(x)
    loss = criterion(out, target)
    loss.backward()
    optimizer.step()
    print("epoch {}, loss {}".format(epoch, loss.item()))