⚙️ Deep Learning
📌 CNN
- Convolution : 두 함수를 곱하여 적분하는 연산
- 이미지와 Convolution
- 특징 추출 : 세로 특성, 가로 특성, edge 추출
- 이미지 변환 : 이미지에 필터 적용
- Convolution 연산
- 입력 데이터 Shape : 3D Tensor
- Filter Shape : 3D Tensor
- Filter Size : 신경망의 성능이 최대가 되도록 설정 (일반적으로 3x3, 5x5, 7x7)
- Filter Numbers : 이미지 복잡도에 따라 다르게 설정 (이미지 특징의 수에 비례)
- 결과 : 2D Feature Map
⚙️ 실습
📌 MNIST 데이터 준비
import tensorflow as tf
fahion_mnist = tf.keras.datasets.fashion_mnist
(train_X, train_y), (test_X, test_y) = fahion_mnist.load_data()
train_X = train_X / 255.0
test_X = test_X / 255.0
train_X = train_X.reshape(-1,28,28,1)
test_X = test_X.reshape(-1,28,28,1)
📌 CNN 모델 구현
model = tf.keras.Sequential([
# 합성곱 층
tf.keras.layers.Conv2D(input_shape = (28,28,1), kernel_size = (3,3), filters = 16),
tf.keras.layers.Conv2D(kernel_size = (3,3), filters = 32),
tf.keras.layers.Conv2D(kernel_size = (3,3), filters = 64),
# 분류를 위한 FNN
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(units = 128, activation = 'relu'),
# 출력용 층
tf.keras.layers.Dense(units = 10, activation = 'softmax')
])
📌 학습 방법 세팅
model.compile(
loss = 'sparse_categorical_crossentropy',
optimizer = tf.keras.optimizers.Adam(),
metrics = ['accuracy']
)
📌 학습 진행
model.fit(train_X, train_y, epochs = 20, validation_split = 0.25, batch_size = 128)