Search code examples
pythonparametersneural-networkpytorch

PyTorch and Neural Networks: How many parameters in a layer?


Ive seen many sources talk about the number of parameters in a neural network and mention that it is calculated as:

num parameters = ((shape of width of the filter * shape of height of the filter * number of filters in the previous layer+1)*number of filters)

but I've been having trouble understanding how that applies to networks created using nn from torch

for example how many parameters would this network have?

class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10)
        )

    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

Solution

  • The object nn.Linear represents a matrix with dimention [m, n]. For example, nn.Linear(28*28, 512) has (28*28)*512 parameters(weights). Check here for more information about it.

    The object nn.Flatten() and nn.ReLU() do not contain parameters.

    edit: we do not consider bias in the linear layer in this case.