AlexNet is a popular convolutional neural network architecture that won the ImageNet 2012 challenge by a large margin. It was developed by Alex Krizhevsky, Ilya Sutskever and Geoffery Hinton. It is similar to the LeNet-5 architecture but larger and deeper. If you want to learn more about the AlexNet CNN architecture, this article is for you. In this article, I’ll take you through an introduction to the AlexNet architecture and its implementation using Python.
AlexNet
The AlexNet CNN architecture is one of the popular architectures of Convolutional Neural Networks. It was the first CNN architecture to stack convolutional layers directly on top of one another. The table below describes the complete architecture of the AlexNet CNN architecture:
| Layer | Type | Maps | Size | Kernel Size | Stride | Padding | Activation |
|---|---|---|---|---|---|---|---|
| Out | Fully Connected | – | 1000 | – | – | – | Softmax |
| F10 | Fully Connected | – | 4096 | – | – | – | ReLU |
| F9 | Fully Connected | – | 4096 | – | – | – | ReLU |
| S8 | Max pooling | 256 | 6X6 | 3X3 | 2 | valid | – |
| C7 | Convolution | 256 | 13X13 | 3X3 | 1 | same | ReLU |
| C6 | Convolution | 384 | 13X13 | 3X3 | 1 | same | ReLU |
| C5 | Convolution | 384 | 13X13 | 3X3 | 1 | same | ReLU |
| S4 | Max pooling | 256 | 13X13 | 3X3 | 2 | valid | – |
| C3 | Convolution | 256 | 27X27 | 5X5 | 1 | same | ReLU |
| S2 | Max pooling | 96 | 27X27 | 3X3 | 2 | valid | – |
| C1 | Convolution | 96 | 55X55 | 11X11 | 4 | valid | ReLU |
| In | Input | 3(RGB) | 227X227 | – | – | – | – |
This Convolutional Neural Network architecture contains eight layers with weights, where the first five layers are convolutional, and the remaining three are fully-connected layers.

The first convolutional layer is an input layer that filters 227x227x3 input images with 96 kernels of size 11x11x3 with a stride of 4 pixels. The kernels of the second, fourth, and fifth convolutional layers are connected only to the kernel maps of the previous layer that reside on the same GPU. The kernels of the third convolutional layer are connected to all the kernel maps of the second convolutional layer, and the neurons in the fully-connected layers are connected to all the neurons in the previous layer.
So this is the overall architecture of the AlexNet CNN architecture. You can learn more about this architecture from this research paper. Now in the section below, I will take you through the implementation of AlexNet architecture using Python.
AlexNet Architecture using Python
I hope you have understood the complete architecture of AlexNet CNN architecture. To implement it using Python, we can use the TensorFlow and Keras library in Python. I will also use the VisualKeras library in Python to visualize the architecture of AlexNet. Below is how to implement AlexNet architecture using Python:
import keras
from keras.models import Sequential,Input,Model
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.layers.advanced_activations import LeakyReLU
import tensorflow as tf
from tensorflow import keras
import keras.layers as layers
model = keras.Sequential()
model.add(layers.Conv2D(filters=96, kernel_size=(11, 11),
strides=(4, 4), activation="relu",
input_shape=(227, 227, 3)))
model.add(layers.BatchNormalization())
model.add(layers.MaxPool2D(pool_size=(3, 3), strides= (2, 2)))
model.add(layers.Conv2D(filters=256, kernel_size=(5, 5),
strides=(1, 1), activation="relu",
padding="same"))
model.add(layers.BatchNormalization())
model.add(layers.MaxPool2D(pool_size=(3, 3), strides=(2, 2)))
model.add(layers.Conv2D(filters=384, kernel_size=(3, 3),
strides=(1, 1), activation="relu",
padding="same"))
model.add(layers.BatchNormalization())
model.add(layers.Conv2D(filters=384, kernel_size=(3, 3),
strides=(1, 1), activation="relu",
padding="same"))
model.add(layers.BatchNormalization())
model.add(layers.Conv2D(filters=256, kernel_size=(3, 3),
strides=(1, 1), activation="relu",
padding="same"))
model.add(layers.BatchNormalization())
model.add(layers.MaxPool2D(pool_size=(3, 3), strides=(2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(4096, activation="relu"))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(10, activation="softmax"))
model.compile(loss='sparse_categorical_crossentropy',
optimizer=tf.optimizers.SGD(lr=0.001),
metrics=['accuracy'])
model.summary()Model: "sequential_4"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_23 (Conv2D) (None, 55, 55, 96) 34944
batch_normalization_20 (Bat (None, 55, 55, 96) 384
chNormalization)
max_pooling2d_12 (MaxPoolin (None, 27, 27, 96) 0
g2D)
conv2d_24 (Conv2D) (None, 27, 27, 256) 614656
batch_normalization_21 (Bat (None, 27, 27, 256) 1024
chNormalization)
max_pooling2d_13 (MaxPoolin (None, 13, 13, 256) 0
g2D)
conv2d_25 (Conv2D) (None, 13, 13, 384) 885120
batch_normalization_22 (Bat (None, 13, 13, 384) 1536
chNormalization)
conv2d_26 (Conv2D) (None, 13, 13, 384) 1327488
batch_normalization_23 (Bat (None, 13, 13, 384) 1536
chNormalization)
conv2d_27 (Conv2D) (None, 13, 13, 256) 884992
batch_normalization_24 (Bat (None, 13, 13, 256) 1024
chNormalization)
max_pooling2d_14 (MaxPoolin (None, 6, 6, 256) 0
g2D)
flatten_4 (Flatten) (None, 9216) 0
dense_8 (Dense) (None, 4096) 37752832
dropout_4 (Dropout) (None, 4096) 0
dense_9 (Dense) (None, 10) 40970
=================================================================
Total params: 41,546,506
Trainable params: 41,543,754
Non-trainable params: 2,752
_________________________________________________________________
Now here is how you can visualize the architecture of your neural network architecture:
import visualkeras visualkeras.layered_view(model)

Summary
The AlexNet CNN architecture is one of the popular architectures of Convolutional Neural Networks. It was the first CNN architecture to stack convolutional layers directly on top of one another. I hope you liked this article on an introduction to AlexNet CNN architecture and its implementation using Python. Feel free to ask your valuable questions in the comments section below.





