일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이서
- 개발자
- Python
- JavaScript
- CNN
- 머신러닝야학
- 연산자
- 머신러닝
- 파이썬
- Java
- LeNet
- MySQL
- 판다스
- Database
- reshape
- 야학
- 머신러닝(딥러닝)
- 생활코딩 머신러닝야학
- 생활코딩
- 데이터베이스
- 데이터베이스 개론
- pandas
- 카카오클라우드스쿨2기
- flatten
- 딥러닝
- 이것이 자바다
- 생활코딩 데이터베이스
- tensorflow
- Today
- Total
IT's 우
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 3 - MaxPool2D 본문
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 3 - MaxPool2D
디우 2021. 1. 18. 01:15- CNN의 마지막 퍼즐 조각 Max Pooling에 대해 이해하기
- MaxPool2D 레이어의 사용방법과 역할
Convolution Layer로 출력된 특정맵의 개수 증가
↓
Flatten이후 입력으로 사용할 데이터의 칼럼수가 증가
↓
컴퓨터가 찾아야 하는 가중치 수 증가를 의미
↓
Pooling
Flatten이후 사용되는 가중치의 수를 작게 유지하기 위해 입력으로 사용할 칼럼 수를 조정하는 목적
-Convolution Layer이후에 MaxPool Layer를 추가
Convolution Layer로 출력된 특징맵 이미지 사이즈가 MaxPool Layer를 거치면서 절반으로 줄어드는 것을 확인할 수 있다. -> MaxPool Layer를 통해 모델을 만들면 Flatten만 이용하여 만든 모델보다 가중치의 수가 줄어들 수 있다.
MaxPooling - 가장 큰 숫자를 유지하면서 사이즈를 줄이는 방식
-> 큰 값으로 표현된 부분은 Convolution Filter로 찾으려 했던 특징이 나타난 곳을 의미하고 있다. MaxPooling은 유의미한 정보를 남기면서 사이즈를 줄이려는 의도가 담겨있다.
-실습
1. Flatten만 사용
2. MaxPooling Layer 사용(특정맵의 이미지 가중치 줄어드는 것 확인!!!!)
<전체 소스코드>
###########################
# 라이브러리 사용
import tensorflow as tf
import pandas as pd
###########################
# 데이터를 준비하고
(독립, 종속), _ = 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()
출처 : 생활코딩 www.opentutorials.org/module/5268/29791
'생활코딩 > 머신러닝(텐서플로우(python))' 카테고리의 다른 글
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN) - 내 이미지 사용하기 (0) | 2021.01.20 |
---|---|
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 완성 - LeNet (0) | 2021.01.19 |
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 2 - Conv2D (0) | 2021.01.17 |
생활코딩 머신러닝야학_Tensorflow 102 - 이미지 분류(CNN)/ 다섯번째 딥러닝 1- Flatten (0) | 2021.01.16 |
생활코딩 머신러닝야학_Tensorflow 102 -이미지 분류(CNN)/ 데이터와 차원 (0) | 2021.01.15 |