#291 · Deep Learning · Medium
⊣ Solve on deep-ml.comCalculate the total number of trainable parameters in a neural network given its layer specifications. Each layer may be a dense (fully connected) layer, convolutional layer, etc.
def count_parameters(layers: list[dict]) -> int:
total = 0
for layer in layers:
layer_type = layer.get("type", "dense")
if layer_type == "dense":
input_size = layer["input_size"]
output_size = layer["output_size"]
has_bias = layer.get("bias", True)
params = input_size * output_size
if has_bias:
params += output_size
total += params
elif layer_type == "conv2d":
in_channels = layer["in_channels"]
out_channels = layer["out_channels"]
kernel_h = layer["kernel_size"]
kernel_w = layer.get("kernel_size_w", kernel_h)
has_bias = layer.get("bias", True)
params = in_channels * out_channels * kernel_h * kernel_w
if has_bias:
params += out_channels
total += params
elif layer_type == "batchnorm":
num_features = layer["num_features"]
total += 2 * num_features # gamma and beta
elif layer_type == "embedding":
num_embeddings = layer["num_embeddings"]
embedding_dim = layer["embedding_dim"]
total += num_embeddings * embedding_dim
return total