CNN : Convolutional Neural Networks(합성곱 신경망)
- 컨볼루션은 한 함수가 다른 함수를 수정하는 방법을 보여주는 세 번째 함수를 생성하는 두 함수에 대한 연산
- 컨볼루션에는 교환 성, 연관성, 분배 성 등 다양한 수학적 속성이 있다
- 컨볼루션을 적용하면 입력의 모양(shape)이 효과적으로 변환된다
CNN의 첫번째 단계 covolution
입력 이미지의 영역을 수신을 담당하는 뉴런에 매핑하는 변환
장점 : 이전 이미지 학습 기술에 비해 이미지 전처리(자르기, 센터링, 정규화)가 상대적으로 거의 필요하지 않다 / 이미지의 모든 종류의 일반적인 문제(이동, 조명 등)에 대해 견고하다
model = Sequential()
model.add(Conv2D(32, (3,3), activation='relu', input_shape=(32,32,3)))
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()
summary 출력'''
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 30, 30, 32) 896
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 13, 13, 64) 18496
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0
_________________________________________________________________
conv2d_2 (Conv2D) (None, 4, 4, 64) 36928
_________________________________________________________________
flatten (Flatten) (None, 1024) 0
_________________________________________________________________
dense (Dense) (None, 64) 65600
_________________________________________________________________
dense_1 (Dense) (None, 10) 650
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
'''
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
- 기존 데이터로 학습된 네트워크를 재사용 가능하도록 하는 라이브러리
학습되었다는 것은 가중치와 편향이 포함된 학습된 모델의 일부를 재사용하기에 transfer learning이라고 표현한다- 일부만 사용할수도 전체를 재학습할 수도 있다
- 교육 데이터를 적게 사용하고 교육 속도가 빠르며 더 잘 일반화하는 모델을 가질 수 있다