The built-in catalog
Keras ships 37+ pretrained image models in keras.applications — every one carries ImageNet weights and a known accuracy/size tradeoff. You don't pick by name recognition; you pick by where the model has to run and how much accuracy you can afford to buy with parameters.
| Model | Params | Top-1 Acc | Best For |
|---|---|---|---|
| EfficientNetV2 | 6M–119M | Up to 85.7% | Best accuracy/efficiency tradeoff |
| ResNet50 | 25M | 76.0% | Widely used, well understood |
| MobileNetV3 | 2.5M–5.4M | 75.2% | Mobile/edge deployment |
| ConvNeXt | 28M–350M | Up to 88.5% | Modern CNN architecture |
| VGG16 | 138M | 71.3% | Simple, educational |
The one argument that matters: include_top
For transfer learning you almost always load with include_top=False. That argument decides whether you get the original ImageNet classifier on top. With it set to False, Keras drops the final 1000-way Dense layer and hands you the raw feature extractor — the convolutional stack that turns an image into a feature map. You then attach your own head sized to your number of classes. Keep the default include_top=True only when you actually want to predict the original 1000 ImageNet categories. The Code section below shows the exact call.
One sizing detail: with include_top=False the output is a feature map (height × width × channels), not a vector — which is why the next lesson always follows the backbone with a GlobalAveragePooling2D before the Dense head.