Архитектура LeNet-5 с использованием Python
Архитектура LeNet-5 – самая широко используемая архитектура сверточных нейронных сетей. Ее создал Ян ЛеКанн в 1998 году. Если вы никогда не использовали архитектуру сверточных нейронных сетей LeNet-5, то эта статья для вас. Здесь я познакомлю вас с архитектурой LeNet-5 и ее реализацией с помощью Python.
Архитектура LeNet-5
LeNet-5 – это сверточная архитектура нейронной сети, созданная Янном ЛеКанном в 1998 году. Она включает 7 слоев, вдобавок к входному слою, в котором есть обучаемые параметры, называемые весами. Вы можете получить полный обзор слоев этой архитектуры сверточной нейронной сети на изображении ниже.
В архитектуре нейронной сети, показанной выше:
- Слой C1 представляет собой сверточный слой с шестью картами признаков, размер которых составляет 28 × 28;
- Слой S2 – это слой подвыборки с шестью картами признаков, размер которых составляет 14 × 14;
- Слой C3 представляет собой сверточный слой с шестнадцатью характеристическими картами, размер которых составляет 10 × 10;
- Слой S4 является слоем подвыборки с шестнадцатью характеристическими картами, размер которых составляет 5 × 5;
- Слой C5 представляет собой сверточный слой с 120 картами признаков, размер которых составляет 1 × 1;
- Слой F6 содержит 84 единицы и полностью связан со сверточным слоем C5.
Надеюсь, теперь вы понимаете, как устроена архитектура сверточных нейронных сетей LeNet-5. Вы можете больше узнать о них в этой исследовательской статьи. В следующем разделе я расскажу вам о его реализации с использованием Python.
LeNet-5 с использованием Python
Чтобы построить архитектуру сверточной нейронной сети LeNet-5, вы можете использовать TensorFlow и библиотеку Keras на Python. Итак, давайте импортируем все необходимые библиотеки Python, которые нам понадобятся для построения архитектуры этой нейронной сети:
import keras from tensorflow import keras import keras.layers as layers 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
Ниже показано, как можно построить архитектуру сверточной нейронной сети LeNet-5:
model = keras.Sequential() model.add(layers.Conv2D(filters=6, kernel_size=(3, 3), activation='relu', input_shape=(32,32,1))) model.add(layers.AveragePooling2D()) model.add(layers.Conv2D(filters=16, kernel_size=(3, 3), activation='relu')) model.add(layers.AveragePooling2D()) model.add(layers.Flatten()) model.add(layers.Dense(units=120, activation='relu')) model.add(layers.Dense(units=84, activation='relu')) model.add(layers.Dense(units=10, activation = 'softmax')) model.compile(loss=keras.losses.categorical_crossentropy, optimizer=keras.optimizers.Adam(), metrics=['accuracy'])
Также вы можете визуализировать архитектуру своей нейронной сети с помощью библиотеки VisualKeras в Python. Если вы никогда не использовали ее раньше, то можете установить эту библиотеку, используя команду pip, указанную ниже:
- pip install visualkeras
Ниже показано, как вы можете визуализировать архитектуру своей сверточной нейронной сети:
import visualkeras visualkeras.layered_view(model)
Резюме
Вот как можно построить архитектуру сверточных нейронных сетей LeNet-5. Это архитектура сверточных нейронных сетей, созданная Янном ЛеКанном в 1998 году. Она состоит из 7 слоев, не считая входного слоя, который содержит обучаемые параметры, известные как веса. Надеюсь, вам понравилась эта статья о введении в архитектуру LeNet-5 и ее реализацию с использованием Python.