Hello,…
I’m train a CNN_LSTM model for video classification  I get accuracy in the training but in the test I get not accuracy at the test at all even thought the loss in the test is less than the in the training  does anyone has any Idea of what does this mean??
this is the model code
class CNN(nn.Module):
    def __init__(self):
        super(CNN, self).__init__()
        self.conv1 = nn.Conv2d(1, 5, kernel_size=5, padding=1)
        self.conv2 = nn.Conv2d(5, 10, kernel_size=5)
        #self.conv2_drop = nn.Dropout2d()
        #self.fc1 = nn.Linear(32* 1`Preformatted text`93 * 7, args.output_dim* 2)
        #self.fc2 = nn.Linear( args.output_dim* 2, args.output_dim)

    def forward(self, x):
        x = F.relu(F.max_pool2d(self.conv1(x), 2))
        x = F.relu(F.max_pool2d(self.conv2(x), 2))
        #x = x.view(-1, 1369720)
        #x = F.relu(self.fc1(x))
        #x = F.dropout(x,p = 0.4, training=self.training)
        #x = self.fc2(x)
        #return F.log_softmax(x, dim=1)
        return x


class Combine(nn.Module):
    def __init__(self):
        super(Combine, self).__init__()
        self.cnn = CNN()
        self.rnn = nn.LSTM(
            input_size=31130, 
            hidden_size=args.unit_dim, 
            num_layers=args.layer_dim,
            batch_first=True)
        self.linear = nn.Linear(args.unit_dim,args.output_dim)

    def forward(self, x):
        #print(x.size())
        batch_size, C, H, W = x.size()
        
        timesteps = W
        
        c_in = x.view(batch_size , C, H, W)
        c_out = self.cnn(c_in)
        batch_size, C, H, W = c_out.size()
        
        timesteps = W
        #print(c_out.shape)
        r_in = c_out.view(batch_size,timesteps,  -1)
        # Initialize hidden state with zeros
        h0 = torch.zeros(args.layer_dim, r_in.size(0), args.unit_dim).requires_grad_().cuda()

        # Initialize cell state
        c0 = torch.zeros(args.layer_dim, x.size(0), args.unit_dim).requires_grad_().cuda()
        r_out, (h_n, h_c) = self.rnn(r_in, (h0.detach(), c0.detach()))
        r_out2 = self.linear(r_out[:, -1, :])
        
        return F.log_softmax(r_out2, dim=1)

and here’s the result

Train Epoch: 1 [0/148 (0%)]	Loss: 2.717366, Accuracy: 8/148 (5%)
Train Epoch: 1 [10/148 (8%)]	Loss: 2.718801, Accuracy: 8/148 (5%)
Train Epoch: 1 [20/148 (17%)]	Loss: 2.718715, Accuracy: 8/148 (5%)
Train Epoch: 1 [30/148 (25%)]	Loss: 2.686563, Accuracy: 19/148 (12%)
Train Epoch: 1 [40/148 (33%)]	Loss: 2.703117, Accuracy: 24/148 (16%)
Train Epoch: 1 [50/148 (42%)]	Loss: 2.713950, Accuracy: 34/148 (22%)
Train Epoch: 1 [60/148 (50%)]	Loss: 2.720159, Accuracy: 44/148 (29%)
Train Epoch: 1 [70/148 (58%)]	Loss: 2.680100, Accuracy: 54/148 (36%)
Train Epoch: 1 [80/148 (67%)]	Loss: 2.696464, Accuracy: 64/148 (43%)
Train Epoch: 1 [90/148 (75%)]	Loss: 2.705050, Accuracy: 74/148 (50%)
Train Epoch: 1 [100/148 (83%)]	Loss: 2.696478, Accuracy: 84/148 (56%)
Train Epoch: 1 [99/148 (92%)]	Loss: 2.744526, Accuracy: 84/148 (56%)

Test set: Average loss: 0.0550, Accuracy: 0/148 (0%)

Train Epoch: 2 [0/148 (0%)]	Loss: 2.695786, Accuracy: 20/148 (13%)
Train Epoch: 2 [10/148 (8%)]	Loss: 2.703209, Accuracy: 30/148 (20%)
Train Epoch: 2 [20/148 (17%)]	Loss: 2.720705, Accuracy: 30/148 (20%)
Train Epoch: 2 [30/148 (25%)]	Loss: 2.679636, Accuracy: 50/148 (33%)
Train Epoch: 2 [40/148 (33%)]	Loss: 2.698552, Accuracy: 50/148 (33%)
Train Epoch: 2 [50/148 (42%)]	Loss: 2.717396, Accuracy: 50/148 (33%)
Train Epoch: 2 [60/148 (50%)]	Loss: 2.736416, Accuracy: 50/148 (33%)
Train Epoch: 2 [70/148 (58%)]	Loss: 2.707628, Accuracy: 50/148 (33%)
Train Epoch: 2 [80/148 (67%)]	Loss: 2.713427, Accuracy: 58/148 (39%)
Train Epoch: 2 [90/148 (75%)]	Loss: 2.688998, Accuracy: 58/148 (39%)
Train Epoch: 2 [100/148 (83%)]	Loss: 2.727160, Accuracy: 63/148 (42%)
Train Epoch: 2 [99/148 (92%)]	Loss: 2.706110, Accuracy: 90/148 (60%)

Test set: Average loss: 0.0550, Accuracy: 0/148 (0%)

Train Epoch: 3 [0/148 (0%)]	Loss: 2.719501, Accuracy: 0/148 (0%)
Train Epoch: 3 [10/148 (8%)]	Loss: 2.714300, Accuracy: 30/148 (20%)
Train Epoch: 3 [20/148 (17%)]	Loss: 2.707472, Accuracy: 50/148 (33%)
Train Epoch: 3 [30/148 (25%)]	Loss: 2.699172, Accuracy: 60/148 (40%)
Train Epoch: 3 [40/148 (33%)]	Loss: 2.707073, Accuracy: 60/148 (40%)
Train Epoch: 3 [50/148 (42%)]	Loss: 2.726472, Accuracy: 60/148 (40%)
Train Epoch: 3 [60/148 (50%)]	Loss: 2.692422, Accuracy: 70/148 (47%)
Train Epoch: 3 [70/148 (58%)]	Loss: 2.712257, Accuracy: 70/148 (47%)
Train Epoch: 3 [80/148 (67%)]	Loss: 2.706228, Accuracy: 90/148 (60%)
Train Epoch: 3 [90/148 (75%)]	Loss: 2.697551, Accuracy: 100/148 (67%)
Train Epoch: 3 [100/148 (83%)]	Loss: 2.710042, Accuracy: 100/148 (67%)
Train Epoch: 3 [99/148 (92%)]	Loss: 2.698733, Accuracy: 100/148 (67%)

Test set: Average loss: 0.0550, Accuracy: 0/148 (0%)