-
[Lecture note] CNN - N431카테고리 없음 2021. 8. 25. 14:03
Convolution (합성곱)
특정 필터를 기반으로 가진 데이터 셋의 엣지를 찾아내는 것
필터로 곱해준 다음 모두 더해준다.
Stride
한번에 얼만큼 걸을지 나타내는 말이다.
Convolution 진행 할 때 한번에 건너뛰는 칸수를 나타낸다.
- Filter: 가중치 (weights parameters)의 집합으로 이루어져 가장 작은 특징을 잡아내는 창. 신경망에서 찾아낸 웨이트(가중치)를 말한다. 커널(Kernel)이라고도 한다.
- Padding: Zeros(또는 다른 값)을 이미지의 외각(가장자리)에 배치하여 conv를 할 때 원래 이미지와 같은 데이터의 수를 갖을 수 있도록 도와줌 (Stride = 1일 때), 2이상이면 아무리 패딩넣어도 데이터는 줄어든다.
Pooling (풀링)
매트릭스의 특정 부분 매트릭스(주로 2x2) 중 max, avg 값만 추려내어 차원 줄여주는 방법
stride는 행렬크기로 고정된다. 아래는 풀링행렬 2X2, Stride 2
컨볼루젼 이후 실행된다.
# Setup Architecture # 기존 신경망과 달리 Dense 대신에 Conv2가 생기신 것을 볼 수 있습니다. # 풀링 레이어와 마지막에는 Dense인 일반 신경망이 또 등장합니다. model = Sequential() model.add(Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3))) #노드의 개수 32, 필터(커널) 3x3 행렬 model.add(MaxPooling2D((2,2))) model.add(Conv2D(64, (3,3), activation='relu')) model.add(MaxPooling2D((2,2))) model.add(Conv2D(64, (3,3), activation='relu')) model.add(Flatten()) model.add(Dense(64, activation='relu')) model.add(Dense(10, activation='softmax')) model.summary()
input_shape = (256, 256, 3) kernel_size = (5, 5) padding = "valid" strides = 2 #output size = (126, 126, 3)