넘파이와 파이토치의 텐서 연산의 기본

Sung Dong Kim·2021년 7월 15일
0

ai

목록 보기
2/3

잘 알다시피 1차원 데이터는 벡터, 2차원을 행렬, 3차원을 텐서라고 부른다.

2차원 행렬의 크기를 구하기 위해선 배치 사이즈x차원(dim)를 하면 된다.

우리가 딥러닝으로 컴퓨터 비전을 다룰 때의 3차원 텐서는 보통 배치 사이즈x높이x너비가 데이터의 크기다.

자연어 처리를 할 때의 3차원 텐서는 배치 사이즈x길이x차원(아마 임베딩된 벡터를 뜻하는 듯??)으로 나타내어진다.

파이썬에서 행렬이나 텐서를 다룰 때에는 numpy라는 패키지를 주로 사용한다.
넘파이는 파이썬 내장함수에는 없는 행렬, 텐서에 대한 편리한 연산들이 있을 뿐만 아니라 c기반으로 짜여져 있기 때문에 연산도 훨씬 빠르다.

간단한 사용법은 아래와 같다.

앞으로 쓰게 될 딥러닝 라이브러리인 파이토치의 사용법 또한 넘파이와 비슷하다.

파이토치의 행렬 연산도 broadcasting을 지원한다.

파이토치에서 * 연산자와 .mul은 행렬 성분끼리의 곱을 한다.

우리가 흔히 알고 있는 행렬곱 연산을 수행하기 위해서는 matmul을 사용해야 한다.

mean 메서드를 사용할 경우 dim이 0이면 가로 방향, 1이면 세로 방향으로 평균을 구한다. 이는 sum에서도 같다.
사진엔 없지만 괄호에 아무것도 넣지 않으면 전체 원소에 대하여 연산을 수행한다.

max는 최댓값과 최댓값의 위치인 argmax 두개를 리턴한다.
dim의 방식은 위에 mean, sum과 같고 물론 argmax 단독으로 사용할 수도 있다.

profile
notion으로 이사갔어요

0개의 댓글