Pytorch Tensor basic code

이상혁·2024년 3월 14일

Pytorch

목록 보기
2/2
post-thumbnail

이번 포스팅은 저번 포스팅에 이어 파이토치 환경에서 주로 쓰이는 함수 및 기능에 대해서 작성하였습니다.


Numpy

자세한 설명은 크게 진행하지 않으며 간단한 코드와 함께 확인하였습니다.

numpy를 활용한 배열을 선언해줍니다.

.dim : 배열의 Rank를 확인할 수 있습니다. 현재 배열은 1차원으로 이루어져 있기에 1이 출력됩니다
.shape :
리스트와 동일하게 슬라이싱 및 index를 이용하여 값을 확인할 수 있는데요.
-1 index는 맨 뒤의 요소값을 뜻합니다.

index 앞에 :가 붙게되면 그전 모든 요소를 뜻하게됩니다.

Torch Tensor


Numpy를 이용한 모습과 동일하게 선언이 가능합니다.
print로 요소값을 출력해본 결과는 다음과 같으며 .dim과 같이 동일한 함수도 지니고 있습니다.

.shape 및 .size는 동일한 값을 출력합니다.

다양한 Rank와 Shape를 가진 Tensor를 선언 후 출력해 보았습니다!

Broadcasting

행렬의 덧셈 및 곱을 실행할때는 일정한 조건이 필요합니다!
이때 이 기능을 사용하게 되면 자동으로 행렬의 크기를 맞추어서 실행되는 것을 확인할 수 있습니다.

Matmul

일반곱과 행렬곱은 차이가 존재합니다.
자세한 내용은 선형대수를 통하여 학습하였으므로 생략하도록 하겠습니다.

코드에서 알 수 있듯이 Matmul을 사용하게 되면 일반 mul과는 달리 행렬 곱을 실행하게 됩니다.

Mean, Sum


평균을 구해주는 Mean 과 합을 구해주는 Sum입니다.

Max and Argumax

Tensor 중 인덱스 값 중에서 최대값 및 인덱스 값을 리턴해줍니다.
max를 사용하면 Argumax 값도 같이 리턴해줍니다. 이를 슬라이싱하여 그 값만 하나씩 뽑아올 수 있습니다!

View(Reshape)

shape를 자유자재로 변경할 수 있는 기능이기 때문에 매우 중요합니다!
-1은 보통 변동이 심한 Batchsize 위주로 줍니다.

Squeeze, Unsqueeze

  • view와 동일하다 element 경우가 1일때 조금 더 효과적일 수 있게 알아서 조절해준다.
  • Unsqueeze는 이와 반대라고 생각하면 된다. (0)인 경우 첫번째 dim에 1을 넣으라는 것으로 생각하면 된다.

Type Casting


마스킹과 관련지어 사용하기 때문에 나중에 유용하게 쓰일 수 있는 기능입니다.

Concatenate


cat으로 사용되는 이 기능은 두개의 Matrix를 합친다고 생각하면 됩니다.

Stacking

Concatenate의 기능에서 몇가지를 단축시켜 조금 더 빠르게 진행이 되도록 해줍니다.

  • 두번째의 print에서는 dim을 1로 주어 조건을 주지 않았을때는 (3,2)로 만들어지는데 이때 3을 dim=1에다가 위치하게 하여 (2,3)이 되도록 합니다.

  • 세번째 코드를 살펴보면 (1,2) , (1,2) , (1,2) 각각 3개의 shape 모양의 차원이 결정되고 이를 cat으로 합친 결과가 Stack을 통하여 합친 것과 동일함을 확인할 수 있다.

Ones and Zeros

2 X 3의 Tensor인 형태

  • one or zeros 를 사용했을때 0혹은 1로 가득한 shape로 표현하게 된다.
  • device로 가져갈 수 있게 된다. (GPU + CPU) 같은 device와 연관

In-place Operation

업로드중..

x 2 를 진행하게 되면 이 순간에 메모리가 따로 사용이 되서 원래의 값에 영향을 미치지 않고 나오게 된다.
그러나 _언더바를 쓰게 되면 새로운 메모리를 사용하지 않고 원래 메모리에 접근을 하여 곱셈이 되는 결과를 확인할 수 있다.

Pytorch를 사용하면서 유용한 여러 함수들을 만나보았는데요! 코드를 짜보는 과정에서 실제로 써보면서 학습하게된다면 좀더 익숙해질것 같습니다.
다음 포스팅은 linear regression으로 이어지겠습니다.

0개의 댓글