I was training a CNN network on German traffic sign classifier data. The architecture was-

  • 3 convolutional layers with intermediate max pooling
  • concatenated outputs of layer 2 and layer 3 to feed to the input layer of the fully connected classifier.
  • A final layer giving the softmax probabilities of the classes.
  • Used ReLu as the activation function.
  • Dropout for regularization only for the input layer of fully connected(FC) network with a keep_prob of 0.5

I did not scale the outputs of the FC input layer neither at the training time nor at the testing time. And while testing used a keep_prob of 1.0. I achieved an accuracy of 99 on validation set and 94 on the testing set.

Now, my question is- How did I achieve this much accuracy without scaling when using dropout?


1 Answer 1


I am pretty much a noobie - but my understanding is that without scaling the input, model takes longer to learn. I scaled my inputs - image = 1/255. I did nothing for the outputs - I got numbers too good to be true for validation accuracy (1.0) and loss (0.0000004). Looking for an explanation I found that unless I scaled my output my validation numbers were bogus. As noobie I could not figure out how to scale the outputs, so I just killed the =1/255. My wonderful model was not normal junk:)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.