250x250
Notice
Recent Posts
Recent Comments
Link
코딩걸음마
[딥러닝] Pytorch의 기초 본문
728x90
1. Pytorch의 Tensor Allocation
import torch
#실수 tensor 생성
ft = torch.FloatTensor([[1, 2],
[3, 4]])
#정수 tensor 생성
lt = torch.LongTensor([[1, 2],
[3, 4]])
#byte tensor 생성 (0과 1로 구성)
bt = torch.ByteTensor([[1, 0],
[0, 1]])
#garbage tensor 임의의 값을 포함하는(실수) 텐서 생성
x = torch.FloatTensor(10, 5) #(행, 열)
output------------------------------------------------------------
#tensor([[2.7444e+20, 2.8298e+20, 1.1289e+27, 3.4271e-12, 4.5144e+27],
# [1.8515e+28, 1.9364e+26, 1.7738e+22, 1.2123e+04, 7.1846e+22],
# [2.4176e-12, 7.5555e+31, 7.4415e+28, 1.8465e+25, 2.6289e-15],
# [7.0367e+22, 3.7181e-14, 1.6109e-19, 1.8888e+31, 6.6660e-33],
# [1.9431e-19, 1.8987e+28, 7.1061e+31, 4.2964e+24, 1.7442e+28],
# [1.7444e+28, 6.9776e+22, 1.6404e-34, 4.4894e+21, 2.9781e+35],
# [1.7369e+19, 1.0899e+27, 1.4328e-19, 1.8918e+23, 7.1443e+31],
# [1.5039e+25, 2.0193e-19, 6.2609e+22, 4.7428e+30, 2.8298e+20],
# [3.0304e+35, 7.3968e+20, 1.7841e+25, 4.4644e+30, 2.7198e+23],
# [5.0944e-14, 2.8298e+20, 3.0304e+35, 7.2251e+28, 2.7368e+30]])
2 . Pytorch 와 Numpy의 관계 (Pytorch ≒Numpy?)
Pytorch의 장점을 소개하는 글을 보면 Pytorch가 Numpy와 비슷하다는 말을 자주 듣는다.
기본 연산이 매우 유사하기 때문이다. 기본형만 봐도 그렇다.
예시)
numpy 에서 array를 생성할때 np.array([1 , 2 ])
pytorch에서 tensor를 생성할때 torch.FloatTensor([ 1, 2 ])
구조가 거의 똑같다고 보면된다.
또한 numpy와의 호환성은 또 하나의 장점이다.
다음 예시는 np.array를 torch로 바꾸는 코드이다.
import numpy
import torch
#np.array 생성
x = np.array([[1, 2],
[3, 4]])
#np.array 로부터 torch로 변환
x = torch.from_numpy(x)
print(x, type(x))
물론 torch에서 np.array로도 변환이 가능하다.
x = x.numpy()
print(x, type(x))
3. 기초 함수 모음
type 변경 코드
ft = torch.FloatTensor([[1, 2],
[3, 4]])
#정수 tensor로 변환
ft.long()
#실수 tensor로 변환
ft.float()
tensor는 다차원을 넘나들기에 한눈에 보기 쉽지 않다.
x = torch.FloatTensor([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]],
[[9, 10],
[11, 12]],
[[13, 14],
[15, 16]]])
다음은 tensor의 크기와 차원정보를 간단히 알려주는 코드이다.
print(x.size())
print(x.shape)
#output--------------------------------------------------------
#torch.Size([4, 2, 2])
#torch.Size([4, 2, 2])
(4,2,2)라는 결과값을 볼수 있는데 이는 (1차원 원소 개수, 2차원 원소 개수, 3차원 원소 개수.....)를 뜻한다.
다음은 차원의 개수를 알려주는 코드이다.
print(x.dim())
print(len(x.size()))
dim이라는 코드로 바로 호출할수 있고, x.size() 로 차원을 표현하는 tuple의 길이를 출력하는 방식으로 호출할 수 있다.
다음은 해당 차원의 원소의 개수를 출력하는 코드이다.
print(x.size(0))
print(x.shape[0])
0 은 인덱스를 의미하면 1번째 원소를 뜻한다. 파이썬이므로 역시 -1은 마지막 원소를 뜻한다.
728x90
'딥러닝_Pytorch' 카테고리의 다른 글
[딥러닝] Pytorch 차원다루기(Shaping/squeeze) (0) | 2022.06.23 |
---|---|
[딥러닝] Pytorch 기초연산 (0) | 2022.06.23 |
[딥러닝] pytorch 설치하기 (0) | 2022.06.23 |
다중선형회귀분석에서 다중공선성 확인 및 제거하기 (with VIF) (0) | 2022.06.21 |
PCA(Principal Component Analysis) 주성분분석 (1) | 2022.06.21 |
Comments