멋사 ai 스쿨 TIL - (37)

eve·2022년 12월 5일
0

likeLion

목록 보기
38/45
  1. 합성곱 층 만들기
  • DNN을 사용할 때 입력과 CNN 입력 차이: DNN에 비해 CNN에서는 컬러채널이 추가된다. input shape에서 (이미지 높이, 이미지 너비, 컬러채널) 순으로 입력값이 추가된다.

# filter, kernel_size, pool_size 지정해주지 않아도 위치만 맞으면 인식된다.

model = models.Sequential()
model.add(layers.Conv2D(filters=32, kernel_size=(3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
model.add(layers.MaxPooling2D(pool_size=(2, 2)))
model.add(layers.Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
  • 모니터, 인쇄매체 등 어디에 색상을 사용하느냐에 따라 표현 방식이 달라진다 (RGB, CMYK)
  1. feature extraction
  • CNN은 feature 자동 추출기나 다름 없다.
  • 먼저 filter를 랜덤하게 여러장 생성한다. 각 필터 사이즈는 kernel_size로 정한다. (이때, RGB 채널은 이미 나뉘어져 생성된 상태)
  • 필터를 이미지에 통과시킨 후 합성곱 연산을 하여 결과가 나오면, 그 결과로 특징을 추출한다.
  • 랜덤한 필터의 다양한 모양들을 통과시켜서 이미지가 해당 필터의 패턴을 얼마나 가지고 있는지 확인한다.
  • 요약: 패턴 생성 -> filter -> kernel_size로 필터 사이즈 지정
  1. kernel_size
  • 커널 크기가 작을수록 레이어 크기가 더 작아지므로, 더 깊은 아키텍처가 가능하다.
  • 반대로 큰 커널 크기는 더 적은 정보를 추출하므로 레이어 차원이 더 빨리 줄어들고 성능이 저하되는 경우가 많다.

-- question: 비즈니스 모델에 적용하자면, 복잡한 패턴을 발견해내고자 할 때 더 높은 성능의 모델링과 그에 따른 비용이 필요할 것이다. 반대로 패턴이 단순하게 적용되어도 무방한 문제를 해결해야 한다면, 커널 사이즈를 키우는 것으로 비용 부담을 덜어서 적절한 트레이드 오프를 발생시킬 수 있다.

profile
유저가 왜 그랬을까

0개의 댓글