nn.Module is a base class for other modules and its purpose is not only to store the learnable parameters (weights/biases) but hooks, buffers as well. In PyTorch, modules are not only the network layers (nn.Conv2d, nn.BatchNorm), but loss functions (nn.MSELoss) or containers (nn.Sequential), to name a few. So it’s not necessary for each module to store the weights. You can check the Variables section in the docs to find out what parameters the module has (e.g. for nn.Conv2d 17).