티스토리 뷰

▶파이토치(Pytorch)

파이토치는 tensorflow와 함께 머신러닝, 딥러닝에서 가장 너리 사용되는 프레임워크입니다.

초기에는 Torch라는 이름으로 Lua언어 기반으로 만들어졌으나, 이후 파이썬 기반으로 변경한 것이 Pytorch입니다.

import torch
print(torch.__version__) # 1.12.0+cu113

 

▷Tensor는 데이터 타입

텐서는 배열이나 행렬과 매우 유사한 특수 자료구조입니다.

파이토치는 텐서를 사용하여 모델의 입력과 출력, 모델의 매개변수들을 부호화합니다.

지난 텐서플로우 글에서도 말했듯이 tensor는 tensorflow와 연관되었다기보다는 데이터 타입입니다.

 

1) ndarray / list → tensor : tensor()

파이토치는 텐서플로우와 같이 ndarray / list를 tensor 타입으로 변경할 수 있습니다.

텐서플로우에서는 convert_to_tensor() 함수를 사용했던 거 기억하시죠?

파이토치에는 좀 더 간단하게 tensor() 함수를 사용하면 됩니다.

 

리스트를 만들어서 이를 tensor 타입의 객체로 만들어주겠습니다.

data = [[1, 2], [3, 4]]
x_data = torch.tensor(data)
print(x_data)
# tensor([[1, 2],
#        [3, 4]])

이번에는 ndarray를 tensor 타입의 객체로 만들어주겠습니다.

import numpy as np

np_array = np.array(data)
x_np_1 = torch.tensor(np_array)
print(x_np_1)
# tensor([[1, 2],
#        [3, 4]])

 

2) tensor의 동일한 메모리 참조 : as_tensor() 

print(x_np_1) # 새로운 텐서
# tensor([[100,   2],
#        [  3,   4]])

print(np_array) # 기존 ndarray
# [[1 2]
# [3 4]]

① as_tensor() : ndarray / list → 동일한 메모리를 참조하는 tensor 객체 생성

x_np_2 = torch.as_tensor(np_array)
print(x_np_2)
# tensor([[1, 2],
#       [3, 4]])

as_tensor(np_array)를 했더니 np_array와 모두 동일한데 tensor 타입으로만 바뀌었습니다.

동일한 메모리를 참조한다고 했는데 이를 확인해봅시다.

x_np_2[0, 0] = 100

print(x_np_2)
# tensor([[200,   2],
#        [  3,   4]])

print(np_array)
# [[200   2]
# [  3   4]]

x_np_2(새로운 텐서)의 데이터를 변경했더니 동일한 메모리를 참조하고 있던 np_array의 [0, 0] 데이터도 변경되었습니다.

 

▷Tensor 내장 함수

1) ones()

a = torch.ones(2,3)
print(a)
# tensor([[1., 1., 1.],
#        [1., 1., 1.]])

2) zeros()

b = torch.zeros(2, 3)
print(b)
# tensor([[0., 0., 0.],
#        [0., 0., 0.]])

3) full()

c = torch.full((2, 3), 2)
print(c)
# tensor([[2, 2, 2],
#        [2, 2, 2]])

4) empty() : 양수로만 tensor를 랜덤한 값으로 생성. NaN도 포함 가능

d = torch.empty(2, 3)
print(d)
# tensor([[1.3243e-35, 0.0000e+00, 3.3631e-44],
#        [0.0000e+00,        nan, 1.0000e+00]])

5) eye() : 대각행렬

e = torch.eye(3) # (3,3)짜리 대각행렬
print(e)
# tensor([[1., 0., 0.],
#        [0., 1., 0.],
#        [0., 0., 1.]])

6) arange()

f = torch.arange(10)
print(f)
# tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

7) rand() : 양수로만 랜덤하게 tensor 생성

g = torch.rand(2,2)
print(g)
# tensor([[0.5852, 0.2939],
#        [0.5851, 0.6450]])

8) randh() : 음수포함하여 랜던하게 tensor 생성

h = torch.randn(2,2)
print(h)
# tensor([[-0.1975, -0.3367],
#        [-0.5456,  0.0939]])

 


여기까지 파이토치에 대해 공부해보았습니다 :)

여기에서 따로 써놓지는 않았지만 파이토치에서도 텐서플로우와 마찬가지로

sum(), subtract(), multiply() 등과 같이 기본 연산 함수들은 동일합니다 :)

728x90
LIST
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함