Track how channel counts grow through dense blocks and shrink through compressing transition layers.
The H_l composite function: BatchNorm, ReLU, then a 3x3 convolution producing growth_rate feature maps.
DenseNet-B bottleneck: a 1x1 conv to 4*growth_rate channels before the 3x3 conv, reducing computation.
Dense connectivity: each layer's input is the concatenation of all preceding feature maps.
Compress channels with a 1x1 conv (theta) and downsample with 2x2 average pooling between dense blocks.
Assemble the full DenseNet: stem conv, dense blocks with transitions, final norm, global pool, classifier.