머신러닝_CNN

홍성채·2022년 4월 28일
0

머신러닝

목록 보기
14/15

CNN

MLP의 특징


기존 위치인 회색에서 벗어나면 인식을 못하는 문제가 있다.

이를 해결하기 위해 특징을 추출하여 분석하는 CNN이 나왔다.

CNN

CNN의 구조


Feature Extractor : 특징 분류
Classifier : 판단하는 부분(MLP)

  • FeatureExtractor
    • convLayer
      특정 부분을 강조시켜주는 부분

      필터의 크기만큼 쪼개어 계산하다보니 출력 데이터는 원본 데이터보다 크기가 줄어든다.

보통 첫번째 층에서는 자주보이는 선, 광원 같은 걸 추출

두번째 층은 구체적인 특징들이 자주 보이는 것 위주로 추출

마지막 층은 종합적으로 판단

  • PoolingLayer
    특정 부분을 제외한 나머지 부분을 삭제하는 역할

실습

  • 모델 생성
from tensorflow.keras.layers import Conv2D, MaxPool2D, Flatten
cnn_model = Sequential() # 모델의 뼈대
cnn_model.add(InputLayer(input_shape=(224,224,3)))
cnn_model.add(Conv2D(filters=128,
                    kernel_size=(3,3),
                    activation="relu"))
cnn_model.add(MaxPool2D())
cnn_model.add(Conv2D(filters=256,
                    kernel_size=(3,3),
                    activation="relu"))
cnn_model.add(MaxPool2D())
cnn_model.add(Conv2D(filters=64,
                    kernel_size=(3,3),
                    activation="relu"))
cnn_model.add(MaxPool2D())
# 분류기 (MLP)
cnn_model.add(Flatten())
cnn_model.add(Dense(units=64,activation='sigmoid'))
cnn_model.add(Dense(units=32,activation='sigmoid'))
cnn_model.add(Dense(units=2,activation='softmax'))

실행 시

  • 모델 학습
cnn_model.compile(loss="sparse_categorical_crossentropy",#3개 이상일 경우
                 optimizer="Adam",
                 metrics=['accuracy'])
from sklearn.model_selection import train_test_split                 
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2, random_state=425)
cnn_model.fit(X_train,y_train,epochs=50)
  • 모델 예측
pre = cnn_model.predict(X_test)
  • 모델 평가
from sklearn.metrics import classification_report
print(classification_report(y_test, np.argmax(pre,axis=1)))

실행 시

활성화 함수


사용되는 함수

0~1사이의 값이 반환

문제 유형에 따라 사용되는 활성화 함수와 오차함수 종류


예시

출력 값은 0~1 사이가 나온다

오차 역전파

profile
초보 코딩

0개의 댓글

관련 채용 정보