Currently I'm feeding spectrogram of audio to the CNN with 3 convolution.

Each convolution is followed by a max pool of filter size 2.

First -> 5x5x4

Second - > 5x5x8

Third - > 5x5x16

and final layer is a fully connected with 512 unit.

But while training with dropout of 0.25, getting train accuracy of 0.97 with 150 iterations. and on test data accuracy is just 0.60.

Tell me how to improve the results.

Yes both train and test data come from same distribution.

  • $\begingroup$ What is your dataset size, and how easy is it to get more data? Would your target output remain the same if you altered the audio source - e.g. adding noise, changing speed (or just pitch), etc? $\endgroup$ Mar 13, 2019 at 19:50
  • $\begingroup$ Dataset contains 1k images. because this is a people voice classification problem more data is not available but haven't tried data augmentation. will try and update here. $\endgroup$
    – Ajmal Rasi
    Mar 13, 2019 at 20:10

1 Answer 1


The problem of overfitting is given that your model is being too flexible with the training data. The approaches you could take will be:

  1. Download pretrained models (VGG-16) and use transfer learning.
  2. Increase the value of your dropout (e.g. from 0.25 to 0.50).
  3. Use data augmentation for your images.
  4. Reduce the number of fully connected layers.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .