MaxPool2D 실습

최한빈·2023년 11월 29일
0

딥러닝

목록 보기
10/10

CNN 기본구조

X = tf.keras.layers.Input(shape=[28,28,1])

H = tf.keras.layers.Conv2D(3, kernal_size=5, activation='swish')(X)
H = tf.keras.layers.Maxpool2D()(H)

H = tf.keras.layers.Conv2D(6, kernal_size=5, activation='swish')(X)
H = tf.keras.layers.Maxpool2D()(H)

H = tf.keras.layers.Flatten()(H)
H = tf.keras.layers.Dense(84, activation='swish')(H)
H = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')

컨볼루션 레이어 바로 밑에다가 MaxPool2D레이어를 선언해준다

앞의 맥스풀링을 활용하지 않은 모델에서는 28x28에서 24x24로 바뀌고 24x24에서 20x20으로 바뀌어서 픽셀수 400개x6장 = 2400의 픽셀수가 나왔었는데, 그럼 Flatten의 출력이 2400개의 칼럼이 되어, dense_2에서 20만개의 가중치가 등장한다.

맥스풀링을 사용한 모델에서는 28x28이미지를 24x24로 줄인 다음 맥스 풀링을 통해 12x12로 줄였다. 그 다음 컨볼루션을 통해 다시 8x8로 조금 더 줄이고, 맥스 풀링을 해서 또 4x4로 줄였다. 그러므로 플래튼 할 대상은 4x4이미지 6장이 된다. 16x6=96개의 칼럼이 되고, 96개의 칼럼으로 84개를 만드는 건 아주 적은 수의 가중치가 필요하므로 학습이 빨리 진행되면서도 정확도는 유지되는 것을 확인할 수 있다.

profile
데이터 분석 공부하는 대학생

0개의 댓글