Real Late Starter

[PyTorch] 1. 텐서(Tensor) 본문

PyTorch

[PyTorch] 1. 텐서(Tensor)

조슈아박 2020. 1. 11. 10:13

 

1. Torch의 Tensor

텐서란?

 

- Tensor는 Pytorch의 자료형이다.

- Tensor는 단일 데이터 타입으로 된 자료들의 다차원 행렬이다.

- Tensor는 간단한 명령어를 통해서 GPU로 연산을 수행하게 만들 수 있다.

- Tensor 변수 뒤에 .cuda()를 추가하면 하면 된다.

 

- 텐서의 종류

텐서에는 다양한 종류가 있으며 GPU를 사용해서 텐서를 선언했을 경우에는 dtype이 torch.cuda.Tensor 형식으로 나오게 된다.

 

2. Tensor의 선언

 

텐서의 선언을 하기에 앞서 먼저 torch를 import 해줍니다.

torch.Tensor() 형태로 텐서를 선언해 줄 수 있습니다. 괄호 안에는 텐서의 크기를 입력해줍니다.

 

 

위는 단일 차원의 텐서를 선언을 해주었고 밑의 경우는 3 by 3 형태의 텐서를 선언을 해주었습니다.

torch.Tensor() 형태로 선언을 해주게 되면 자동으로 torch.Tensor 타입으로 생성이 됩니다.

 

Tensor의 random 선언

다음으로는 텐서를 랜덤하게 선언해서 사용하는 방법입니다.

랜덤하게 선언해서 사용하는 방법으로는 2가지가 있습니다.

# rand를 통한 a는 0에서 1사이의 uniform distribution random 값으로 선언
a = torch.rand(3,3)
# randn을 통한 a는 평균이 0이고 분산이 1인 normal distribution random 값으로 선언
a = torch.randn(3,3)

 

3. Numpy to Tensor

우리가 주로 사용하는 Numpy를 Tensor형태로 변경하는 방법을 알아보겠습니다.

 

4. Tensor to Numpy

텐서를 넘파이로 바꾸는 방법은 .numy()를 사용하면 간단하게 가능하다.

 

 

5. Tensor의 View

텐서를 선언하게되면 연산을 위해서 텐서의 형태를 변환해주어야 하는 경우가 있다.

텐서의 형태를 변환하는 방법은 .view()를 사용하여 변경한다.

 

위의 예제의 경우는 3 by 3의 텐서를 4차원으로 변경하고자 합니다.

이 경우에 view()를 사용하여 1 x 1 x 3 x 3의 4차원으로 변경합니다. 괄호 안에는 변경하고자 하는 크기를 넣어주면 된다.

 

 

6. Tensor의 cat

cat을 통해서 텐서를 합칠 수 있다. 사용 방법은 아래와 같다.

torch.cat함수를 이용한다. 괄호 안에 병합할 텐서들을 넣고, 특정 차원인 dim에 맞게 병합을 할 수 있다.

해당 합수를 통해서 Inception Module이나 ResNet을 구현할 때 사용한다고 한다.

torch.cat((Tensor_A, Tensor_B), dim)

# Tensor_A와 Tensor_B를 dim에 맞춰서 합쳐 줍니다.

 

 

7. Tensor의 GPU 연산 (sum, mean)

gpu 연산을 위해서는 .cuda()를 사용해서 gpu로 처리할 수 있도록 선언해주어야한다.

x = torch.rand(3,3)
y = torch.rand(3,3)

if torch.cuda.is_available() :
    x = x.cuda()
    y = y.cuda()
    sum_ = x + y

    print(sum_)

다음은 텐서 안의 값들에 대한 평균과 합을 구하는 방법이다.

이 포스트는 유투브 김군이(https://www.youtube.com/channel/UCK24Wy_G-6V-quKvVRjflgA)님의 강의와 파이토치 첫걸음(최건호)를 학습한 내용을 정리한 것 입니다.