[Tensor]#1 텐서에 대한 고찰

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

Framework

목록 보기
9/48

Tensor

그래프와 벡터

텐서는 다양한 차원으로 나갈 수 있지만 우리가 이해할 수 있는 범위는 4차원정도가 한계인 것 같다. 이때도 4차원은 그래프로 그려낼 수가 없고, 그저 한 차원은 batch로서 무의미한 축으로 생각해야 이해할 수 있는 영역이 된다. 텐서를 보았을때 이것은 크게 두 가지의 방법으로 이해할 수가 있다. 첫번째는 그래프로 그려낼 수 있는 영역이며 아래 그림의 왼쪽에서 이미지를 그려낸 그림이나 spectrogram과 같이 time_frame축과 mel frequeny축으로 이루어진 그래프를 생각할 수 있다. 또 하나는 마지막 차원을 벡터로 생각하여서 마지막 차원의 크기만큼의 축을 가지는 즉, 어떤 크기만큼 임베딩된 특정한 값을 생각하는 방법이다. 이는 하나의 단어가 어떤 숫자들의 조합인 벡터로 바뀌는 것을 생각하면 될듯하며 아래 그림의 오른쪽이다. 사실 독립된 채널을 따로 보느냐 혹은 엮어서 하나의 벡터의 축으로 생각하느냐의 차이인듯 하다. 그래서 벡터는

차원 축소

차원의 축소는 빈번하게 일어난다. torch.max, torch.cat과 같이 필요에 따라 쓰면 된다.

Reshape & Transpose

https://youtu.be/KQH0ohBBTX8 의 내용을 정리해보았습니다.

reshape 와 view, transpose 와 permute를 비교하고 싶다면 아래 링크를 참조
https://sanghyu.tistory.com/3

텐서의 구조는 그것을 이해하는데에 정해진 방법이 없다. 4차원 텐서를 2x2 행렬 안의 2x2 행렬이 들어가 있는 구조로 볼 수도 있고, 1차원 배열 안의 3차원 텐서가 배치 x 이미지 x 이미지의 형태로 들어가 있다고 생각할 수도 있다.


아래의 예시를 보자. (3,2,4)의 텐서를 transpose를 해서 (4,2,3)의 형태 즉 (0,1,2)의 축을 (2,1,0)으로 바꾸어주었다. 여기에서 바뀐 요소들의 위치를 보면 R, G, B에 대한 순서에 대한 정보가 혹은 완결성integrity이 훼손되지 않았다는 것을 볼 수 있다. 영상에서는 이 점을 강조한다.

이제는 transpose를 손으로 직접 적어볼 수 있다. 현재의 축을 따라서 왼쪽 위에서 오른쪽 아래로 대각선의 순서대로 요소들이 나열이 된다.

하지만 차원이 커질수록 요소들을 손으로 배치하는 것은 어려운듯 하다. 그렇기 때문에 나에게 필요한 능력은 axis의 크기를 제대로 따라가는 것이다. 그리고 reshape에서는 각 축을 곱하고 나눠주는 것이 유효하다. 하지만 이 선생님은 여기서 그치지 않고 5차원의 변환을 적어본다.



profile
chords & code // harmony with structure

0개의 댓글