ed-kyu
ee
ed-kyu
전체 방문자
오늘
어제
  • 분류 전체보기 (26)
    • 딥러닝, 머신러닝 (17)
      • NLP (0)
      • Vision (0)
      • 모두를 위한 딥러닝 강의 복습 (9)
      • Andrew Ng 강의 (0)
      • 캐글 (1)
      • 수학 (0)
      • DL Basic (5)
      • 논문 스터디 (2)
      • Product Serving (0)
    • TIL (1)
      • OS (0)
      • Network (0)
      • DB (0)
      • Docker (0)
      • Data Engineering (1)
    • 알고리즘 문제풀이 (3)
      • Baekjoon Algorithm (3)
      • Programmers (0)
    • 주제 없음 (5)
      • Python (2)
      • 기록 (1)
      • etc (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 오블완
  • 백준
  • DeepLearningZeroToAll
  • Python
  • 티스토리챌린지
  • 유기농 배추
  • Kaggle
  • ml
  • 1012

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ed-kyu

ee

딥러닝, 머신러닝/DL Basic

Convolution

2022. 2. 8. 10:21

Convolution(+Pooling)을 하는 이유

Feature extraction (강조, 외곽선을 따는 등의 효과를 줄 수 있음)

 

Fully connected layer

Decision making (ex. 분류, 회귀)

최근에는 이 fully connected layer를 줄이는 추세 Why?

더보기

파라미터가 많을수록 학습이 어렵고 generalization performance(학습 데이터가 아닌 데이터에 대한 성능)이 낮아지므로

1X1 Convolution**

bottleneck architecture

depth가 깊어져도 파라미터 수는 늘어나지 않도록..

 

 

  • Filter : stride크기만큼 지나가면서 conv연산할 때 쓰이는 것, 필터와 비슷할 수록 연산값이 크다. 즉 필터와 얼마나 같은지를 연산으로 구하는 것이라고도 볼 수 있다.

 

  • Zero-padding : 가장자리도 convolution

 

  • Stride : 건너뛰면서 convolution
    • 5X5 stride size 1이면 그냥 그대로니까 Conv 연산 후에도 5X5
    • stride size 2 이면 2.5X2.5인데 이건 불가능하니까 3X3
    • stride와 filter 사이즈 같으면 overlap없음
  • Batch : 배치 사이즈 만큼의 개수를 갖고 학습시킬 것
    • 보통 mini batch 많이 쓴다.

 

  • Conv2D
    • Input tensor of shape : [batch, in_height, in_width, in_channel]
      • in_height, in width가 4, 4 이면 4X4 이미지라는 것
      • 채널은 RGB면 3개
    • Filter size : [filter_height, filter_width, in_channels, out_channels]
      • in_channels : conv할 이미지의 채널 수(in_channel)과 같은 숫자여야 함
    💬 예시 4X4X3이미지(채널 3개), filter 크기: 3X3X3여기서, out_channels가 7이면 필터 종류가 7개라고 생각하면 됨
    • 위의 예시에서 paramter의 수?
      • 3 * 3 * 3 * 7 = 189개
      • 참고) 파라미터 수는 적은 게 좋다...
    • Bias : 필터 개수만큼~
    • 결론: conv + bias 더하기 + activation func (여기까지가 머라고 햇지..?)
    • + Max pooling ( ex. 2X2 씩 돌면서 젤 큰 숫자만 남김, 겹침 없이 확인)
      • 28X28X64가 max pooling (2X2로) 하면 14X14X64가 됨
    • + Reshape + Fully Connected Layer
      • reshape은 그냥 한 줄로 피는 것 : 14X14X64 → 14X14X64
      • fully connected layer는 14X14X64를 행렬 연산해서 10X1로 바꿈
    • 10개 숫자가 들어가 있는 인덱스, 라벨을 사용( = 원 핫 코딩 )
  •  
    • 정리
      • Conv
      • bias_add
      • activation func
      • max pooling
      • 여기까지 하면 Conv feature map이 나옴
      • reshape
      • fully connected layer
  • 그러므로 최종 결과는 4X4X7
  • 연산 하면 4X4X1 됨
  • tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

'딥러닝, 머신러닝 > DL Basic' 카테고리의 다른 글

CNN - 1x1 convolution의 중요성(AlexNet, VGGNet, GoogleNet, ResNet, DenseNet)  (0) 2022.02.08
Optimization  (0) 2022.02.07
뉴럴 네트워크 - MLP (Multi-Layer Perceptron)  (0) 2022.02.07
DL의 대표적인 논문들  (0) 2022.02.07
    '딥러닝, 머신러닝/DL Basic' 카테고리의 다른 글
    • CNN - 1x1 convolution의 중요성(AlexNet, VGGNet, GoogleNet, ResNet, DenseNet)
    • Optimization
    • 뉴럴 네트워크 - MLP (Multi-Layer Perceptron)
    • DL의 대표적인 논문들
    ed-kyu
    ed-kyu

    티스토리툴바