스터디📖/ML, DL

Tensorflow 이미지 분류(CNN) - 9, 10강 다섯번째 딥러닝 3 - MaxPool2D

호프 2021. 10. 4. 12:25

https://opentutorials.org/module/5268/29791

 

다섯번째 딥러닝 3 - MaxPool2D - Tensorflow 102 - 이미지 분류(CNN)

수업소개 CNN의 마지막 퍼즐 조각 Max Poolling에 대해서 이해하는 수업입니다. MaxPool2D 레이어의 사용방법과 역할을 이해합니다.  강의 실습 소스코드 colab |  backend.ai ########################### # 라이

opentutorials.org

9강 MaxPool2D

  • dense(Dense) 레이어에서는 84개의 수식이 만들어지고 각 수식마다 2400개의 가중치와 1개의 bias가 필요하므로 총 필요한 가중치의 개수는 84 * (2400 + 1) = 201684
  • Convolution layer에서 아웃풋인 칼럼이 커질수록 필요한 가중치의 개수도 많아짐

Pooling

Flatten 이후에 사용되는 가중치 개수를 작게 유지하기 위해 입력으로 사용할 칼럼수를 조정하는 것이 목적

가로세로 2,2의 영역에서 가장 큰 수를 남기는 것. -> MaxPooling

10강 MaxPool2D (실습)

실습 코드는 드라이브에 업로드

# 데이터를 준비하고
(독립, 종속), _ = tf.keras.datasets.mnist.load_data()
독립 = 독립.reshape(60000, 28, 28, 1)
종속 = pd.get_dummies(종속)
print(독립.shape, 종속.shape)
 
###########################
# 모델을 만들고
X = tf.keras.layers.Input(shape=[28, 28, 1])
 
H = tf.keras.layers.Conv2D(3, kernel_size=5, activation='swish')(X)
H = tf.keras.layers.MaxPool2D()(H)
 
H = tf.keras.layers.Conv2D(6, kernel_size=5, activation='swish')(H)
H = tf.keras.layers.MaxPool2D()(H)
 
H = tf.keras.layers.Flatten()(H)
H = tf.keras.layers.Dense(84, activation='swish')(H)
Y = tf.keras.layers.Dense(10, activation='softmax')(H)
model = tf.keras.models.Model(X, Y)
model.compile(loss='categorical_crossentropy', metrics='accuracy')
 
###########################
# 모델을 학습하고
model.fit(독립, 종속, epochs=10)
 
###########################
# 모델을 이용합니다. 
pred = model.predict(독립[0:5])
pd.DataFrame(pred).round(2)
 
# 정답 확인
종속[0:5]
 
# 모델 확인
model.summary()