вівторок, 25 травня 2021 р.

Реалізація штучної нейронної мережі AlexNet в Keras

import keras
from keras.models import Sequential
from keras.layers import Dense, Activation, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.layers.normalization import BatchNormalization
import numpy as np
np.random.seed(1000)
#Ініціюємо модель
model = Sequential()

# 1-й Згортковий шар
model.add(Conv2D(filters=96, input_shape=(224,224,3), kernel_size=(11,11), strides=(4,4), padding=’valid’))
model.add(Activation(‘relu’))
# Агрегація(Max Pooling)
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# 2-й Згортковий шар
model.add(Conv2D(filters=256, kernel_size=(11,11), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))
# Агрегація(Max Pooling)
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# 3-й Згортковий шар
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))

# 4-й Згортковий шар
model.add(Conv2D(filters=384, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))

# 5-й Згортковий шар
model.add(Conv2D(filters=256, kernel_size=(3,3), strides=(1,1), padding=’valid’))
model.add(Activation(‘relu’))
# Агрегація(Max Pooling)
model.add(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding=’valid’))

# Передача даних в повнозв'язний шар 
model.add(Flatten())
# 1-й Повнозв'язний шар 
model.add(Dense(4096, input_shape=(224*224*3,)))
model.add(Activation(‘relu’))
# Розрідження
model.add(Dropout(0.4))

# 2-й Повнозв'язний шар 
model.add(Dense(4096))
model.add(Activation(‘relu’))
# Add Dropout
model.add(Dropout(0.4))

# 3-й Повнозв'язний шар 
model.add(Dense(1000))
model.add(Activation(‘relu’))
# Розрідження
model.add(Dropout(0.4))

# Вихідний шар
model.add(Dense(17))
model.add(Activation(‘softmax’))

model.summary() 

Немає коментарів:

Дописати коментар