Day79

김재현·2023년 9월 13일

JUPYTER/DL/ML

목록 보기
52/73

딥러닝은 지도학습

연습문제4, 5 풀이

작은 크기의 이미지를 확대해서 진행하는 만큼 해상도 저하는 감수.

batch_size

이미지를 몇 개씩 묶을지를 결정.
처음부터 끝까지 이미지를 학습하면 시간이 걸리는 만큼 특정 갯수씩 묶어 이미지를 학습 -> 전체 데이터 수 / batch_size -> 학습할 이미지 군집 수.

  • 학습 속도는 빨라지지만 정확도는 하락.

모델 정의

(Conv2D 적용 [-> BatchNormalization층 적용] -> MaxPool2D 적용 [-> Dropout])의 과정을 n번 반복 -> Flatten 레이어 추가 -> Dense층 n개 추가

  • Conv2D 층
    • 영상이나 이미지의 특징을 확인하기 위한 함수
    • filters: 필터(커널)의 개수
    • kernel_size: 필터의 크기
    • strides: 필터의 이동 간격
    • padding: valid(패딩 없음), same(인풋과 아웃풋이 같도록 패딩)
    • activation: 활성화 함수
    • input_shape: 첫 레이어에 인풋으로 들어오는 크기
  • BatchNormalization (배치정규화)
    • 신경망 입력데이터를 평균 0, 분산 1로 정규화해서 학습이 잘 이루어지도록 하는 방법
    • BatchNormalization 층에서 정규화를 수행하므로 별도의 정규화를 적용할 필요가 없다.
    • 만약 이 층을 적용하지 않는다면 학습 전에 별도의 정규화를 수행하는 것이 좋다.
  • MaxPool2D
    • 컨볼루션 레이어의 출력 이미지에서 주요값만 뽑아 크기가 작은 출력 영상을 만든다.
    • pool_size: 축소시킬 필터의 크기(비율)
    • strides: 필터의 이동 간격. 기본값으로 pool_size를 갖는다.
    • 일반적으로 strides는 pool_size와 동일하게 적용되므로 생략하는 편.

filter가 클수록, kernel_size가 작을 수록 모델이 성능이 개선됨.
단, 학습 시간도 오래 걸림.

activation : 다중분류 = softmax, unit 10 / 이진 = sigmoid, unit 1/0

loss : 다중분류 = categorical_crossentropy, 이진 = binary_crossentropy

학습하기

  • epochs는 많아도 크게 상관이 없음(단, 너무 크면 오래 걸리고 오차가 증가)
    • callback을 사용해 모델의 학습 방향, 저장 시점, 학습 정지 시점 등에 관한 상황을 모니터링
    • EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안 평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
    • ReduceLROnPlateau EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안 평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
    • ModelCheckpoint 지정한 평가지표를 기준으로 가장 뛰어난 성능을 보여주는 모델을 저장 할 때 사용

0개의 댓글