ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 합성곱 신경망 | im2col
    Deep Learning/밑딥1 2021. 7. 7. 03:45
    728x90

    im2col

    "image to column"

    합성곱은 4차원 텐서에 대한 연산이므로 구현하려면 코드가 복잡해지고 반복문으로 내적해서 array에 넣는 코드 횟수가 많을 경우는 시간이 오래 걸린다.

     

    im2col은 4차원 텐서를 2차원 텐서로 바꾸어 행렬 계산으로 처리해서 속도를 높여준다.(합성곱 정의대로 구현한 코드보다 약 200배 속도 향상)

     

    im2col 연산

     

    im2col을 이용한 합성곱

    데이터를 합성곱 순서대로 부분 tensor를 뽑아내서 flatten시킨 후 각 행에 넣어 col 이란 행렬을 만든다.

    데이터의 im2col 연산 과정, 4차원 텐서를 2차원 텐서로 바꾼다.

     

    각 필터를 flatten 시켜 각 열에 넣어 colW 란 행렬을 만든다.

    필터의 im2col 연산 과정, 4차원 텐서를 2차원 텐서로 바꾼다.

     

    두 행렬 colcolW 를 곱한다.

    col x colW

     

    N x OH x OW x FN 의 형태로 reshape 하고 transpose(0,3,1,2)를 취한다.

    최종적으로 N x FN x OH x OW 형태가 나올텐데, 처음부터 N x FN x OH x OW 형태로 reshape 하면 되는거 아니냐?? 라는 질문을 할 수 있다.

    위의 질문대로 reshape을 한다면 결과가 다르게 나오게된다.

    예를 들어주고 싶지만 귀찮다. ㅅㄱ

     

    im2col을 이용한 합성곱 과정

     

    이미지 출처 : https://sites.google.com/site/kyunghoonhan/deep-learning-i

    728x90

    'Deep Learning > 밑딥1' 카테고리의 다른 글

    합성곱 신경망 | 역전파  (2) 2021.07.09
    합성곱 신경망 | Max Pooling  (0) 2021.07.06
    합성곱 신경망 | 합성곱  (0) 2021.07.05
    학습 관련 기술 : 가중치 초기값  (0) 2021.06.25
    오차 역전파법 -1  (0) 2021.05.15

    댓글

Designed by Tistory.