How do I decide the optimal number of layers for a neural network (feedforward or recurrent)?


There is a technique called Pruning in neural networks, which is used just for this same purpose.

The pruning is done on the number of hidden layers. The process is very similar to the pruning process of decision trees. The pruning process is done as follows:

  • Train a large, densely connected, network with a standard training algorithm
  • Examine the trained network to assess the relative importance of the weights
  • Remove the least important weight(s)
  • retrain the pruned network
  • Repeat steps 2-4 until satisfied

However, there are several optimized methods for pruning neural nets, and it is also a very active area of research.

  • 1
    $\begingroup$ A symmetric approach is the common "grid search" applied to the network architecture. Start small (so fast), and automatically try larger architectures. All this is just brute force, though, so it is expensive. Yet, when we can start small, the first stages can go pretty fast, and give a better idea of what to aim for. $\endgroup$ – Eric Platon Aug 3 '16 at 6:41
  • 1
    $\begingroup$ This answer is incorrect. Pruning is a method applied onto the weights, not a method to determine the number of layers (a hyperparameter). $\endgroup$ – k.c. sayz 'k.c sayz' Oct 20 '17 at 2:02

You can take a look at bayesian hyperparameter optimization as a general method of optimizing loss (or anything) as a function of the hyperparameters. But note that in general the deeper your network the better, so optimizing loss as a function of number of layers isn't a very fun thing to do.

Grid search and a bit of common sense (as learnt by seeing many examples) should be your best bet.


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.