티스토리 뷰
▶파이토치(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() 등과 같이 기본 연산 함수들은 동일합니다 :)
'빅데이터 인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝] ⑦ 분류(Classification) 모델 (0) | 2022.08.19 |
---|---|
[머신러닝] ⑥ 회귀(Regression) 분석 A to Z (0) | 2022.08.12 |
[머신러닝] ④ 파이썬 텐서플로우(TensorFlow) (0) | 2022.08.11 |
[머신러닝] ③ 타이타닉 데이터셋 실습 (0) | 2022.08.04 |
[머신러닝] ② 사이킷런 모듈 (0) | 2022.08.02 |
- Total
- Today
- Yesterday
- 디프만
- testing
- 머신러닝
- 자바스크립트
- 타입스크립트
- frontend
- 리액트 훅
- 프론트엔드
- styled-components
- CSS
- 인프런
- 딥러닝
- 프론트엔드 기초
- JSP
- jest
- 스타일 컴포넌트 styled-components
- react
- react-query
- rtl
- 자바스크립트 기초
- Python
- 프론트엔드 공부
- 데이터분석
- 프로젝트 회고
- 자바
- 파이썬
- 리액트
- next.js
- TypeScript
- HTML
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |