sailorCat
카테고리
작성일
2022. 2. 9. 16:17
작성자
sailorCat
728x90
import tensorflow as tf

def AlexNet(
  input_shape=None,
  weights=None,
  classes=1000,
  classifier_activation='softmax'):
  
  model = tf.keras.Sequential([
      #특징 추출 부분 
      #Conv 1
      tf.keras.layers.Conv2D(filters=96,
                              kernel_size=(11, 11),
                              strides=4,
                              padding="valid",
                              activation=tf.keras.activations.relu,
                              input_shape=input_shape),
      #Max Pool 1
      tf.keras.layers.MaxPool2D(pool_size=(3, 3),
                                strides=2,
                                padding="valid"),
      tf.keras.layers.BatchNormalization(),
      #Conv 2
      tf.keras.layers.Conv2D(filters=256,
                              kernel_size=(5, 5),
                              strides=1,
                              padding="same",
                              activation=tf.keras.activations.relu),
      #Max Pool 2
      tf.keras.layers.MaxPool2D(pool_size=(3, 3),
                                strides=2,
                                padding="same"),
      tf.keras.layers.BatchNormalization(),
      #Conv 3
      tf.keras.layers.Conv2D(filters=384,
                              kernel_size=(3, 3),
                              strides=1,
                              padding="same",
                              activation=tf.keras.activations.relu),
      #Conv 4
      tf.keras.layers.Conv2D(filters=384,
                              kernel_size=(3, 3),
                              strides=1,
                              padding="same",
                              activation=tf.keras.activations.relu),
      #Conv 5
      tf.keras.layers.Conv2D(filters=256,
                              kernel_size=(3, 3),
                              strides=1,
                              padding="same",
                              activation=tf.keras.activations.relu),
      #Max Pool 3
      tf.keras.layers.MaxPool2D(pool_size=(3, 3),
                                strides=2,
                                padding="same"),
      tf.keras.layers.BatchNormalization(),
      
      tf.keras.layers.Flatten(),
      
      #분류 층 부분
      #Fully connected layer 1 
      tf.keras.layers.Dense(units=4096,
                            activation=tf.keras.activations.relu),
      tf.keras.layers.Dropout(rate=0.2),
      #Fully connected layer 2
      tf.keras.layers.Dense(units=4096,
                            activation=tf.keras.activations.relu),
      tf.keras.layers.Dropout(rate=0.2),
      
      #Fully connected layer 3
      tf.keras.layers.Dense(units=classes,
                            activation=tf.keras.activations.softmax)
  ])

  return model
728x90

'인공지능 AI > CNN' 카테고리의 다른 글

CNN GoogLeNet  (0) 2022.02.14
CNN VGGNet  (0) 2022.02.14
CNN AlexNet  (0) 2022.02.14
CNN AlexNet Pytorch 실습  (0) 2022.02.09
CNN 컨볼루션 신경망 convolutional neural network  (0) 2022.02.09