이번 포스팅은 저번 포스팅에 이어 파이토치 환경에서 주로 쓰이는 함수 및 기능에 대해서 작성하였습니다.
자세한 설명은 크게 진행하지 않으며 간단한 코드와 함께 확인하였습니다.
numpy를 활용한 배열을 선언해줍니다.
.dim : 배열의 Rank를 확인할 수 있습니다. 현재 배열은 1차원으로 이루어져 있기에 1이 출력됩니다
.shape :
리스트와 동일하게 슬라이싱 및 index를 이용하여 값을 확인할 수 있는데요.
-1 index는 맨 뒤의 요소값을 뜻합니다.
index 앞에 :가 붙게되면 그전 모든 요소를 뜻하게됩니다.

Numpy를 이용한 모습과 동일하게 선언이 가능합니다.
print로 요소값을 출력해본 결과는 다음과 같으며 .dim과 같이 동일한 함수도 지니고 있습니다.
.shape 및 .size는 동일한 값을 출력합니다.
다양한 Rank와 Shape를 가진 Tensor를 선언 후 출력해 보았습니다!
행렬의 덧셈 및 곱을 실행할때는 일정한 조건이 필요합니다!
이때 이 기능을 사용하게 되면 자동으로 행렬의 크기를 맞추어서 실행되는 것을 확인할 수 있습니다.

일반곱과 행렬곱은 차이가 존재합니다.
자세한 내용은 선형대수를 통하여 학습하였으므로 생략하도록 하겠습니다.
코드에서 알 수 있듯이 Matmul을 사용하게 되면 일반 mul과는 달리 행렬 곱을 실행하게 됩니다.


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

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

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



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

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

Concatenate의 기능에서 몇가지를 단축시켜 조금 더 빠르게 진행이 되도록 해줍니다.
두번째의 print에서는 dim을 1로 주어 조건을 주지 않았을때는 (3,2)로 만들어지는데 이때 3을 dim=1에다가 위치하게 하여 (2,3)이 되도록 합니다.
세번째 코드를 살펴보면 (1,2) , (1,2) , (1,2) 각각 3개의 shape 모양의 차원이 결정되고 이를 cat으로 합친 결과가 Stack을 통하여 합친 것과 동일함을 확인할 수 있다.

2 X 3의 Tensor인 형태
x 2 를 진행하게 되면 이 순간에 메모리가 따로 사용이 되서 원래의 값에 영향을 미치지 않고 나오게 된다.
그러나 _언더바를 쓰게 되면 새로운 메모리를 사용하지 않고 원래 메모리에 접근을 하여 곱셈이 되는 결과를 확인할 수 있다.
Pytorch를 사용하면서 유용한 여러 함수들을 만나보았는데요! 코드를 짜보는 과정에서 실제로 써보면서 학습하게된다면 좀더 익숙해질것 같습니다.
다음 포스팅은 linear regression으로 이어지겠습니다.