[Boostcamp AI Tech] PyTorch Pytorch Basics
Tensor
- 다차원 Arrays 를 표현하는 PyTorch 클래스
- numpy-ndarray = TensorFlow의 Tensor = Pytorch의 Tensor
import torch
t_array = torch.FloatTensor(n_array)
print(t_array)
print("ndim :", t_array.ndim, "shape :", t_array.shape)
- 또한 tensor가 가질수 있는 data 타입은 numpy와 동일하다
data = [[3, 5, 20],[10, 5, 50], [1, 5, 10]]
x_data = torch.tensor(data)
x_data[1:]
# tensor([[10, 5, 50],
# [ 1, 5, 10]])
x_data[:2, 1:]
# tensor([[ 5, 20],
# [ 5, 50]])
x_data.flatten()
# tensor([ 3, 5, 20, 10, 5, 50, 1, 5, 10])
torch.ones_like(x_data)
# tensor([[1, 1, 1],
# [1, 1, 1],
# [1, 1, 1]])
x_data.numpy()
# array([[ 3, 5, 20],
# [10, 5, 50],
# [ 1, 5, 10]], dtype=int64)
x_data.shape
# torch.Size([3, 3])
x_data.dtype
# torch.int64
- pytorch의 tensor는 GPU에 올려서 사용가능하다
x_data.device
# device(type='cpu')
if torch.cuda.is_available(): #가능하면 cuda(gpu)에 올려서 실행
x_data_cuda = x_data.to('cuda')
x_data_cuda.device
# device(type='cuda', index=0)
추가로 view, squeeze, unsqueeze 등으로 tensor 조정이 가능하다.
- view: reshape과 동일하게 tensor의 shape을 변환(view와 reshape은 contiguity 보장의 차이, 웬만하면 view사용을 추천)
- squeeze: 차원의 개수가 1인 차원을 삭제 (압축)
- unsqueeze: 차원의 개수가 1인 차원을 추가
tensor_ex = torch.rand(size=(2, 1, 2))
tensor_ex.squeeze()
# tensor([[0.8510, 0.8263],
# [0.7602, 0.1309]])
tensor_ex = torch.rand(size=(2, 2))
tensor_ex.unsqueeze(0).shape
# torch.Size([1, 2, 2])
tensor_ex.unsqueeze(1).shape
# torch.Size([2, 1, 2])
tensor_ex.unsqueeze(2).shape
# torch.Size([2, 2, 1]) https://bit
행렬곱은 어떻게?(mm vs matmul vs dot)
- 행렬곱셈 연산은 함수는 dot이 아닌 mm 사용
- mm은 벡터간 연산을 지원해주지 않는다.
- 벡터간 곱셈은 dot 사용
- matmul은 브로드 캐스팅을 지원해주고 dot은 지원하지 않는다.
AutoGrad(자동미분)
PyTorch의 핵심은 자동 미분의 지원 → backward 함수 사용
Author And Source
이 문제에 관하여([Boostcamp AI Tech] PyTorch Pytorch Basics), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kma7574/dfd저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)