Data Science & Machine Learning — Article 64
VGG-19 Network: A Comprehensive Guide
Explore detailed VGG-19 Network
Introduction
VGG-19 is VGG-16 with three more convolutional layers, one added to each of the last three blocks.
Nothing else changes: the same 3 × 3 kernels, the same channel schedule, the same dense head. That makes it the cleanest controlled experiment in depth that the pre-residual era produced, because exactly one variable moves.
The arithmetic is worth having before the argument. Those three layers add 5, 309, 696 parameters, which is 3.84 percent of the network but 36.08 percent of its convolutional parameters, and they add 26.90 percent to the compute.
All of the added parameters are convolutional and the dense head is byte-for-byte identical.
What they buy is the subject of this article, and one thing they demonstrably buy is a receptive field that finally covers the input.
Table of Contents
- Introduction
- Table of Contents
- What is VGG-19
- Core Components of VGG-19
- Mathematical Foundation
- Types of VGG-19
- Evaluation Metrics
- Selecting Evaluation Metrics
- Assumptions and Practical Considerations
What is VGG-19
Definition
VGG-19 is configuration E of the VGG family: nineteen weight layers comprising sixteen 3 × 3 convolutions in five blocks of sizes 2, 2, 4, 4, 4, followed by the same three dense layers as VGG-16.
Why it exists
- It is the deepest configuration in a study designed to isolate depth. Configurations A, B, D, and E differ only in the number of convolutional layers, so any difference in result is attributable to depth alone.
- It marks where the pre-residual approach stopped paying. The VGG paper’s own conclusion was that depth helped up to 16 to 19 layers, and going further required something other than stacking.
The difference, exactly
Core Components of VGG-19
The three added layers
- conv3_4, conv4_4, and conv5_4, each a 3 × 3 convolution at the block’s existing channel count.
- Their cost is set entirely by that count: 590,080 at 256 channels and 2, 359, 808 at 512.
The unchanged head
- fc6, fc7, and fc8 are identical to VGG-16’s, contributing 123,642,856 parameters to both.
The unchanged blocks
- Blocks 1 and 2 are untouched, which is a deliberate choice: adding layers at 64 and 128 channels would be cheap in parameters and expensive in FLOPs, since those blocks operate at 224 and 112 resolution.
Staged initialization
- The paper initialized the deeper configurations from the shallower ones, because training the deepest from scratch was unstable.
- This is a training detail that turns out to be the substantive finding, and Section 5.5 returns to it.
Mathematical Foundation
The exact delta
Every added parameter is convolutional. The dense head is unchanged, so 100.0 percent of the delta lands in the trunk.
The share row is worth reading carefully, because the dense head did not shrink by a single parameter. It holds 123, 642, 856 in both networks, and its share still falls from 89.36% to 86.06%:
The denominator moved and the numerator did not. That is the whole mechanism by which the dense share has been falling across this part of the series.
The three percentages are the interesting part, because they measure the same change against three different denominators and give three very different impressions.
Against the whole network the change is 3.84 percent and looks negligible. Against the convolutional trunk it is 36.08 percent and looks substantial.
Against compute it is 26.90 percent, which is what a user actually pays.
Reporting only the first is how a change like this gets described as free. It is not free; it is 27 percent more compute for every image, forever.
Why the delta lands where it does
The added layers cost 590, 080 + 2, 359, 808 + 2, 359, 808, and the asymmetry is entirely the channel count:
Quadrupling in parameters for a doubling in channels. So 88.9 percent of the added parameters are in blocks 4 and 5.
The FLOP picture is different again. A layer’s FLOPs are c²k²HW, and since VGG halves H and W at each pool while doubling c, a layer in block 3 at 56 × 56 with 256 channels costs the same as one in block 4 at 28 × 28 with 512.
conv3_4 costs a quarter of conv4_4’s parameters and exactly the same compute.
Parameter count and compute cost rank the three added layers in opposite orders.
The receptive field finally covers the input
Tracking through the convolutional trunk, with each pool doubling the step:
VGG-16, 13 layers:
VGG-19, 16 layers:
This is a genuine, structural thing the three layers buy. In VGG-16 no convolutional unit sees the whole image, so all spatial integration is deferred to fc6.
Get Arko Sengupta’s stories in your inbox
Join Medium for free to get updates from this writer.
In VGG-19 a conv5_4 unit’s receptive field exceeds the input, so the trunk itself can in principle relate any two parts of the image.
Two caveats keep this honest. The theoretical receptive field is an upper bound on influence, and the effective receptive field is known to be substantially smaller and roughly Gaussian, so crossing 224 on paper does not mean the corners actually matter.
And VGG-16 as a whole still sees everything through fc6, so this is a statement about where the integration happens rather than whether it happens.
Depth is added where it is cheapest in parameters, not in compute
The added layers went into blocks 3, 4, and 5. Consider the alternative of adding three layers to blocks 1, 2, and 3 instead:
Adding depth early would cost 6.9× fewer parameters and more compute, because early layers operate at high resolution.
The choice VGG made buys parameters cheaply in FLOP terms and expensively in memory terms.
This is a design tradeoff that only becomes visible when both quantities are reported. A parameter-count summary makes the early placement look obviously better; a latency summary makes it look worse.
What the comparison actually showed
The VGG paper’s own conclusion was that depth helped through their range and that the deepest configurations were close to each other.
Reproducing the accuracy comparison is beyond what can be computed here, so this article does not quote error rates it has not measured.
What can be stated from the architecture alone is the cost, and the cost is 26.90 percent more compute for three more layers.
What is not in dispute is what happened next. Within a year, residual connections allowed networks of 50, 101, and 152 layers, and ResNet-50 reaches better accuracy than VGG-19 with roughly 25.6 million parameters against 143.7 million, a 5.6× reduction.
The lesson drawn was not that depth stopped mattering but that stacking was the wrong way to add it.
Residual connections address this directly by giving the gradient a path of length 1 to every layer, which is what Article 67 covers.
Why VGG-19 is still used
Despite being superseded for classification, VGG-19 remains common as a feature extractor, particularly for perceptual losses and style transfer.
The reason is architectural rather than nostalgic: its uniform structure means the feature maps at each block have a clean, predictable relationship to spatial scale, with no skip connections mixing representations across depths.
A ResNet’s features at a given depth mix information that took many different path lengths, which is what makes it train well and what makes its intermediate representations harder to interpret as a scale hierarchy.
Types of VGG-19
Configuration C against D
- Both have 16 weight layers, but C uses 1 × 1 convolutions in three positions where D uses 3 × 3.
- D performed better, which the paper read as evidence that spatial context matters beyond channel mixing. It is a controlled comparison of kernel size at fixed depth.
VGG-19 with batch normalization
- Removes the need for staged initialization.
- Adds 2c parameters per convolutional layer, which across the 16 layers of VGG-19 is 2×(64·2 + 128·2 + 256·4 + 512·8) = 11,008 parameters, negligible against 143.7 million.
Truncated VGG-19
- Using only the convolutional trunk, discarding the head.
- This is the form used for perceptual losses, and it is 20, 024, 384 parameters rather than 143, 667, 240: 13.94 percent of the published model.
Evaluation Metrics
Parameter delta against three denominators
- Section 5.1’s 3.84, 36.08, and 0.00 percent. Reporting one without the others is how a change gets mischaracterized.
FLOP delta
- +26.90 percent. The number a deployment actually pays, and it does not track the parameter delta.
Final receptive field against input size
- 181 against 224 for VGG-16, 237 for VGG-19. A ratio below 1 means the trunk cannot integrate globally.
Parameters per added layer by block
- 590, 080 against 2, 359, 808, a factor of 4 for a doubling of channels. It determines where depth is affordable.
Trunk parameters only
- 20, 024, 384. The quantity that matters for transfer learning, and 13.94 percent of the headline figure.
Whether staged initialization is required
- A binary that indicates the depth is at the edge of what the architecture can train.
Selecting Evaluation Metrics
Selection rules
- Report a parameter delta against both the total and the relevant subsystem. Here they are 3.84 and 36.08 percent for the same change.
- Always report the FLOP delta separately. Section 5.4 shows a placement that reduces parameters 6.9× and increases compute.
- Compute the final receptive field before adding layers for context. VGG-16 has genuine headroom at 181/224; VGG-19 does not.
- Treat a need for staged initialization as an architectural signal, not a training inconvenience. It is what motivated residual connections.
Assumptions and Practical Considerations
The added layers go in blocks 3, 4, and 5
- Configuration E is specific. Distributing three extra layers differently gives a different model with different cost, per Section 5.4.
The dense head is identical to VGG-16's
- 123, 642, 856 parameters in both. Any comparison that changes the head is not measuring depth.
Staged initialization, or batch normalization
- The original required initializing from a shallower configuration. Without that and without normalization, training from scratch may not converge.
The trunk is what transfers
- 20, 024, 384 of 143, 667, 240. Loading the full model for feature extraction wastes 86 percent of the memory.
The receptive field figure is theoretical
- The effective receptive field is smaller and roughly Gaussian, so 237 > 224 does not mean corner pixels meaningfully influence the output.
FLOPs scale with input area
- 19, 632 MFLOPs is for 224 × 224. Doubling each dimension quadruples it and leaves the parameter count alone.
Depth beyond this range needs a different mechanism
- The empirical result of the VGG study is that stacking runs out. Articles 66 and 67 cover the two answers that followed.









