DL
CNN
geewon_v
2023. 11. 28. 18:03
CNN
Convolutional neural network(CNN 또는 ConvNet)란 데이터로부터 직접 학습하는 딥러닝의 신경망 아키텍처입니다. CNN은 영상에서 객체, 클래스, 범주 인식을 위한 패턴을 찾을 때 특히 유용합니다.
- 컨벌루션 계층은 입력 영상을 일련의 컨벌루션 필터에 통과시킵니다. 각 필터는 영상에서 특정 특징을 활성화합니다.
- ReLU(Rectified Linear Unit) 계층은 음수 값은 0에 매핑하고 양수 값은 그대로 두어서 더 빠르고 효과적인 훈련이 이루어지도록 합니다. 이때 활성화된 특징만 다음 계층으로 전달되므로 이를활성화라고도 합니다.
- 풀링 계층은 비선형 다운샘플링을 수행하여 신경망이 학습해야 하는 파라미터의 개수를 줄임으로써 출력을 단순화합니다.
이러한 연산이 수십 또는 수백 개의 계층에 대해 반복되며, 각 계층은 서로 다른 특징을 식별하도록 학습합니다.
cnn은 채널(channel)을 사용하므로 3차원을 4차원으로 변환
x_train = x_train.reshape((60000, 28, 28, 1)) # (-1, 28, 28, 1)
x_test = x_test.reshape((10000, 28, 28, 1)) # (-1, 28, 28, 1)
print(x_train.shape, x_test.shape)
print(x_train[:1])
고해상도, 크기가 큰 이미지를 전처리 후 작은 이미지로 변환 후 Dense(완전연결층으로 전달)로 분류 진행
Conv2D(필터 수, 필터크기, 스트라이드(필터이동량), 패딩여부, ...)
padding='valid' : 원본이미지 밖에 0으로 채우기를 안함, same : 0 으로 채우기를 함
Conv(합성곱): 필터를 이미지 일부분과 필셀끼리 곱한 후 결과를 더하기한다.
[출처]
https://kr.mathworks.com/discovery/convolutional-neural-network-matlab.html