Python/numpy & Pytorch

[Pytorch] torch 설정, 랜덤 tensor 생성

파송송 2023. 3. 14. 16:27
728x90

Pythorch를 모듈을 사용하여 tensor 객체 만드는 방법

tensor

numpy의 array와 같지만 GPU 계산에서 사용됨


설정 행렬

사용자가 원하는 값을 넣어 행렬을 만듦

Zeros(size)

0이 들어있는 행렬을 return 함

x = torch.zeros(5, 3)
x
tensor([[0., 0., 0., 0., 0.],
        [0., 0., 0., 0., 0.]])

x = torch.zeros(2, 5, dtype=torch.bool)
x
tensor([[False, False, False, False, False],
        [False, False, False, False, False]])

Ones(size)

1이 들어있는 행렬을 returng 함

x = torch.ones(3,2)
x
tensor([[1., 1.],
        [1., 1.],
        [1., 1.]])

 

x = torch.ones(3,2,dtype=torch.bool)
x
tensor([[True, True],
        [True, True],
        [True, True]])

full(size)

사용자가 정의한 값이 들어있는 행렬을 return 함

 

torch.full((2,5), 10)
tensor([[10, 10, 10, 10, 10],
        [10, 10, 10, 10, 10]])

eye(size)

주어진 크기의 대각 성분에 1을 넣어 return 함

x = torch.eye(10,5)
y = torch.eye(10,10)
x, y
(tensor([[1., 0., 0., 0., 0.],
         [0., 1., 0., 0., 0.],
         [0., 0., 1., 0., 0.],
         [0., 0., 0., 1., 0.],
         [0., 0., 0., 0., 1.],
         [0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0.]]),
 tensor([[1., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 1., 0., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 1., 0., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 1., 0., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 1., 0., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 1., 0., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 1., 0., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 1., 0., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0., 1., 0.],
         [0., 0., 0., 0., 0., 0., 0., 0., 0., 1.]]))

랜덤 행렬

난수를 생성하여 tensor를 만듦, 매번 같은 난수가 나와야 한다면 torch.manual_seed()로 seed를 고정시켜야 함

rand(size)

0에서 1 사이의 난수를 return 함(0을 포함, 1은 미포함)

난수이기 때문에 출력값을 아래의 값과 다를 수 있음

torch.rand(2, 5)
tensor([[0.8340, 0.8848, 0.2792, 0.8940, 0.4891],
        [0.6213, 0.0613, 0.7201, 0.7385, 0.4451]])

randn(size)

표준 정규분포를 따르는 난수를 return함 (평균 0, 표준편차 1)

torch.randn(2,5)
tensor([[ 0.9759,  1.9048, -0.4561, -1.1138,  1.9223],
        [-0.4421,  0.3150, -1.7347, -0.1102,  0.8655]])

randint(low, high, size)

low ~ high 사이의 정수 난수를 return 함

torch.randint(0, 5, (2, 5))
tensor([[0, 3, 2, 2, 4],
        [1, 1, 0, 2, 3]])

like(size)

입력으로 들어온 tensor와 같은 크기의 tensor를 return 함

empty는 주어진 size에 맞는 쓰레기(의미 없는) tensor를 return함

x = torch.empty(3,2)

torch.zeros_like(x)
torch.ones_like(x)
torch.full_like(x, 10)

torch.rand_like(x)
torch.randn_like(x)
torch.randint_like((x), 0, 5)
tensor([[0., 0.],
        [0., 0.],
        [0., 0.]])
        
tensor([[1., 1.],
        [1., 1.],
        [1., 1.]])
        
tensor([[10., 10.],
        [10., 10.],
        [10., 10.]])
        
        
tensor([[0.3295, 0.8297],
        [0.8512, 0.4344],
        [0.4614, 0.9267]])

tensor([[-0.9329,  0.4655],
        [ 0.9701,  1.2718],
        [ 1.1560,  0.1633]])
        
tensor([[2., 0.],
        [2., 4.],
        [1., 4.]])

 

 

 

728x90