[밑바닥부터 시작하는 딥러닝] #16 합성곱 신경망과 텐서, 행렬과 텐서의 합성곱

Clay Ryu's sound lab·2022년 3월 29일
0

Note for 2022

목록 보기
28/47

텐서 Tensor

이미지와 텐서



행이 batch 열이 channel

H x W x C

각각의 픽셀이 R,G,B 값을 가지는 3차원 벡터이다.

텍스트와 텐서

텐서의 축

3차원까지는 행렬합, 열합, 행합으로 생각할 수 있다.
하지만 이것을 외우는 것 보다는 3차원은 벡터의 원소가 행렬이 되는 방식으로, 4차원은 행렬의 원소가 행렬이 되는 방식으로 차원을 그리면 계산이 편해진다.
또한 axis합은 그 아래 차원으로 내려가게 된다. 시그마 변수가 하나 날라가는 것이므로 i,j,k라면 이 중에서 하나가 사라진다고 생각하면 편하다.

텐서의 transpose

고차원은 축의 순서를 섞는 방식으로 transpose를 이해해야한다.


행렬의 합성곱

fully connected layer의 문제점

데이터 픽셀을 1열로 나열을 해버리면 이미지의 작은 변화도 규칙이 없는 엄청난 변화로 만들어진다. 따라서 특정 부분만 연결partially interacted은 하는 것이 유리할 수 있다.

시각 피질의 구조

시각 적인 이해에 있어서 공간적인 역할 분담이 되어 있다.

Frobenius inner product

행렬의 합성곱


합성곱 출력의 크기

W : width
P : padding
FW : filter width
S : stride
OW : output width
결국에 묻는 것은 들어가는 가로에 들어가는 필터가 몇개인가라는 것이다.
가로에 들어가는 카드의 개수는 전체 카드의 길이인 W + 2P에서 마지막 카드의 길이 FW를 제외하고 그것을 S로 나누어준 개수가 된다. 마지막에 제외한 마지막 카드 1을 더해주면 된다.

수학적 표현

필터

수평 Sobel 필터

element-wise product이기 때문에 행의 값이 달라지는 지점을 포착한다.
하지만 수직방향의 변화는 포착하지를 못한다.

수직 Sobel 필터

Sobel 필터 적용

텐서의 합성곱

3차원 텐서의 합성곱

잘 알아둬야 할 것은 인풋의 채널과(ex. RGB 3채널) 필터의 채널의 크기는 반드시 동일해야 한다는 것이다. 이것은 도장의 깊이가 동일해야한다는 것으로 추상화하면 좋을 듯 하다. 또한 3차원 텐서로 나오는 아웃풋의 깊이는 필터의 개수와 동일하다는 것도 알아두면 좋다.


element-wise 내적을 하고 bias를 더해준다.

여러 필터의 합성곱

3차원 인풋

4차원 인풋

필터의 학습

사람이 직접 만든 필터보다 훨씬 feature를 잘 잡아낸다.

profile
chords & code // harmony with structure

0개의 댓글