머신러닝&딥러닝/이론

[머신러닝&딥러닝] 파이토치(PyTorch) 주요 함수

거북이07 2024. 1. 9. 12:00

파이토치(PyTorch)의 주요 함수

torch.ones()

ones()는  1의 값을 갖는  tensor를 생성하는 함수이다.

 

💻 코드

a = torch.ones(2, 3)
print(a)

 

✔결과

tensor([[1., 1., 1.],
        [1., 1., 1.]])

torch.zeros()

zeros()는  0의 값을 갖는  tensor를 생성하는 함수이다.

 

💻 코드

b = torch.zeros(2 ,3)
print(b)

 

✔결과

tensor([[0., 0., 0.],
        [0., 0., 0.]])

 


torch.full()

full((행,렬,) 값)은  옵션으로 입력한 값으로 tensor를 생성하는 함수이다.

 

💻 코드

c = torch.full((2, 3), 10)
print(c)

 

✔결과

tensor([[10, 10, 10],
        [10, 10, 10]])

torch.empty()

empty()는 초기화되지 않은 행렬을 생성하는 함수이다. , 그 시점에서 할당된 메로리에 존재하던 값들이 초기값으로 나타남

 

💻 코드

d = torch.empty(2, 3)
print(d)

 

✔결과

tensor([[-4.0245e-23,  4.3467e-41, -4.0245e-23],
        [ 4.3467e-41,  4.4842e-44,  0.0000e+00]])

torch.eye()

eye()는 원하는 크기의 단위 행렬을 생성할 수 있다. 정방행렬이기때문에 행렬을 안써도 된다.

 

💻 코드

e = torch.eye(5)
print(e)

 

✔결과

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.]])

torch.arange()

arange()는 0부터 1씩 증가되어 지정된 값 이전까지 1씩 증가하는 텐서를 만드는 함수

 

💻 코드

f = torch.arange(10)
print(f)

 

✔결과

tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

torch.rand()

rand()는 정규 분포를 따르는 난수를 생성하는 함수이다.0과 1사이의  균일 분포에서 무작위로 추출한 난수를 생성하여 텐서(Tensor)를 반환한다.

 

  • *size: 생성하려는 텐서의 크기를 나타내는 가변 인수로, 텐서의 차원 크기를 지정합니다. 예를 들어 torch.randn(3, 4)는 3x4 크기의 2차원 텐서를 생성합니다.
  • out (optional): 결과를 저장할 출력 텐서로, 기본값은 None입니다. 만약 out 인수를 지정하면 해당 텐서에 결과가 저장됩니다.
  • dtype (optional): 생성되는 텐서의 데이터 타입을 지정하는 인수로, 기본값은 None이며, 자동으로 추론됩니다.
  • layout (optional): 생성되는 텐서의 레이아웃을 지정하는 인수로, 기본값은 torch.strided입니다.
  • device (optional): 생성되는 텐서의 디바이스를 지정하는 인수로, 기본값은 None이며, 현재 사용 중인 디바이스로 자동으로 설정됩니다.
  • requires_grad (optional): 생성되는 텐서의 기울기를 계산할 지 여부를 지정하는 인수로, 기본값은 False입니다.

 

💻 코드

torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

g = torch.rand(2, 3)
print(g)

 

✔결과

tensor([[0.9485, 0.6441, 0.6983],
        [0.8729, 0.9700, 0.4163]])

torch.randn()

randn()는 정규 분포를 따르는 난수를 생성하는 함수이다. 정규 분포에서 무작위로 추출한 난수를 생성하여 텐서(Tensor)를 반환한다. 음수 가능

  • *size: 생성하려는 텐서의 크기를 나타내는 가변 인수로, 텐서의 차원 크기를 지정합니다. 예를 들어 torch.randn(3, 4)는 3x4 크기의 2차원 텐서를 생성합니다.
  • out (optional): 결과를 저장할 출력 텐서로, 기본값은 None입니다. 만약 out 인수를 지정하면 해당 텐서에 결과가 저장됩니다.
  • dtype (optional): 생성되는 텐서의 데이터 타입을 지정하는 인수로, 기본값은 None이며, 자동으로 추론됩니다.
  • layout (optional): 생성되는 텐서의 레이아웃을 지정하는 인수로, 기본값은 torch.strided입니다.
  • device (optional): 생성되는 텐서의 디바이스를 지정하는 인수로, 기본값은 None이며, 현재 사용 중인 디바이스로 자동으로 설정됩니다.
  • requires_grad (optional): 생성되는 텐서의 기울기를 계산할 지 여부를 지정하는 인수로, 기본값은 False입니다.

 

💻 코드

torch.randn(*size, out=None, dtype=None, layout=torch.strided, device=None, requires_grad=False)

h = torch.randn(2, 3)
print(h)

 

✔결과

tensor([[ 0.3869, -1.1985,  0.1404],
        [ 0.5800, -1.1599,  2.5752]])

torch.arange().reshape()

arange()로 지정된 숫자까지의 텐서를 만든 후 .reshape()로 차원을 변경해주는 함수

arange(숫자) 입력한 숫자와 reshape()에 입력한 차원이 맞아야함.

 

💻 코드

# 광장히 중요한거
# 2 - 메트릭스
# 2, 4 행렬
# 개수가 맞아야함
i =  torch.arange(16).reshape(2, 2, 4)
print(i)

 

✔결과

tensor([[[ 0,  1,  2,  3],
         [ 4,  5,  6,  7]],

        [[ 8,  9, 10, 11],
         [12, 13, 14, 15]]])

변수.premute()

premute() 함수는 모든 차원을 맞교환 할 수 있는 함수로 차원을 교환하면서 contiguous한 성질이 사라진다는 특징이 있다.

괄호 안에 인덱스들을 바꾸고자 하는 위치대로 적오주면 된다. 방향이 세로로 진행된다.

 

💻 코드

# 차원을 지정한 인덱스로 변환
# 2. 2. 4
# 방향이 세로방향으로 감
j = i.permute((2, 0, 1)) # 2, 2, 4 -> 4, 2, 2
print(j, j.shape)

 

✔결과

tensor([[[ 0,  4],
         [ 8, 12]],

        [[ 1,  5],
         [ 9, 13]],

        [[ 2,  6],
         [10, 14]],

        [[ 3,  7],
         [11, 15]]]) torch.Size([4, 2, 2])