GoogleNet is a deep convolutional architecture built from nine Inception modules stacked linearly. It reaches 22 layers, or 27 when pooling layers are counted, and ends with global average pooling. Its central design runs several receptive-field sizes in parallel while controlling channel growth. section 11.2.2
A naive Inception module concatenates outputs from 1 × 1, 3 × 3, 5 × 5, and pooling branches. Concatenation increases output channels, so the dimension-reduced version inserts 1 × 1 convolutions before the 3 × 3 and 5 × 5 operations, and after pooling. These projections reduce input channels and therefore reduce the parameter cost of larger filters. section 11.2.2
The architecture also addresses vanishing gradients with two auxiliary classifiers attached to intermediate Inception modules. Each applies softmax and computes an auxiliary loss; the training objective combines these losses with the final loss using weights. section 11.2.2
From architecture to PyTorch
A dimension-reduced Inception module can define separate PyTorch sequential branches: a direct 1 × 1 convolution, a 1 × 1 reduction followed by 3 × 3 convolution, a 1 × 1 reduction followed by 5 × 5 convolution, and a pooling projection. Each branch uses batch normalization and ReLU before its outputs are concatenated.
