1. CNN
- Convolutional Neural Network
- 이미지, 비디오 등 컴퓨터 비전 분야에 주로 사용되는 인공 신경망 구조
- CNN에서 학습이란 특징을 추출하는 필터를 만드는 것
2. CNN 구조
- Input(shape = (x_train[1], x_train[2], x_train[3]))
- Convolutional Layer
- Max pooling Layer
- Convolutional Layer로 특성을 뽑아 낼 경우 데이터의 수가 너무 많아짐
- Max pooling Layer를 통하여 뽑아낸 특징을 요약 및 압축
- Flatten
- Dense Layer에 연결하기 전, 이미지 데이터 정보를 Dense Layer가 인식할 수 있는 데이터로 변경

3. 코드
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import random as rd
import cv2
from sklearn.model_selection import train_test_split
from sklearn.metrics import *
from keras.models import Sequential
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D, Input
from keras.backend import clear_session
from keras.optimizers import Adam
print(x_train.shape, x_val.shape)
x_train = x_train.reshape(60000,28,28,1)
x_val = x_val.reshape(10000,28,28,1)
x_train = x_train / 255.
x_val = x_val / 255.
clear_session()
model = Sequential([Input(shape = (28, 28, 1)),
Conv2D(32, kernel_size=3, input_shape=(28,28,1), padding='same', activation ='relu'),
MaxPooling2D(pool_size = 2),
Dropout(0.3),
Conv2D(64, kernel_size = 3, padding='same', activation = 'relu'),
MaxPooling2D(pool_size = 2),
Dropout(0.3),
Flatten(),
Dense(128, activation = 'relu'),
Dropout(0.3),
Dense(10, activation = 'softmax')
])
model.summary()

Conv2D(32, kernel_size=3, input_shape=(28,28,1),
padding='same', activation ='relu')

MaxPooling2D(pool_size = 2)
- 구역 별 제일 큰 값을 가져옴

잘 보고 가요...🐌