Deep learning and neural networksLoading progress…

Capacity and parameters

Compute a neural-network forward pass and count the parameters of a small multilayer perceptron.

Counting parameters

Every dense layer has in × out weights and out biases. Biases are parameters too. A layer from 3 inputs to 4 outputs has 3×4 + 4 = 16 parameters. A 3→4→2 network has 16 + (4×2 + 2) = 26. Add up the layers; the batch size never enters.

Predict first. How many parameters does a dense layer from 3 inputs to 4 outputs have, with bias?

More parameters, more capacity, but not a guarantee

A wider layer can represent more complicated functions. The data below is two rings: one class inside, one outside. No straight line separates them. Each network was trained the same way (same seed, 1,500 full-batch gradient steps). Pick a width and a training stage and look at the regions it learned.

hidden width:
epoch4
dataset: Circles (60 points) network: 2 → 4 → 1 (17 parameters) after 1500 epochs: loss 0.026 accuracy 100%
widthparamsfinal accuracy
1575%
2997%
31398%
417100%
833100%
1665100%
Final training accuracy on the rings: width 1 reaches 75%, width 2 reaches 97%, width 4 reaches 100%, width 16 reaches 100%.
Chapter context

A neuron computes a weighted sum followed by an activation. Layers combine these operations into functions with learnable parameters. The network is a computation to inspect before it is a framework object to instantiate.

Chapter reference: math, worked example & code

This section belongs to the whole chapter, so it is the same on every lesson in it and may cover a different lesson's topic. The code for the experiment you just ran is inside the experiment itself.

Math and notation

zj=∑iwjixi+bj,hj=ϕ(zj),ReLU⁡(z)=max⁡(0,z).z_j=\sum_iw_{ji}x_i+b_j,\quad h_j=\phi(z_j),\quad \operatorname{ReLU}(z)=\max(0,z).

A dense layer with d inputs and h outputs has dh+h parameters when it includes a bias. A network's parameter count adds the counts of its distinct trainable tensors.

Worked example

For x=[1,2], w=[0.5,−1] and b=0.5, z=−1 and ReLU(z)=0. For a 3→4→2 dense network, the first layer has 16 parameters and the second has 4×2+2=10. The total is 26, excluding any other learned normalization or embeddings.

Reference code

The following example uses the Python standard library and does not call a remote service.

x,w,b = [1,2],[.5,-1],.5
z = sum(a*v for a,v in zip(w,x))+b
assert z == -1 and max(0,z) == 0
assert (3*4+4)+(4*2+2) == 26

Python examples are provided for study and local execution; this page does not execute Python.

Common mistakes

Stacking affine maps without nonlinearities does not create a nonlinear predictor. A bias is not multiplied by an input feature. Architecture capacity is not proof of predictive usefulness.