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$ – Neil Slater Mar 13 '19 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 '19 at 20:10

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.
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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