01. 데이터 생성 및 확인
- 스칼라 : 하나의 숫자
- 벡터 : 숫자와 방향
- 행렬 : 2차워 숫자 배열
- 텐서 : n-차원 숫자 배열
scalar = torch.tensor(7)
print(scalar.item())
tensor = torch.tensor([3, 4])
tensor_ex = torch.tensor([3.0, 6.0, 9.0],
dtype=None,
device=None,
requires_grad=False)
print(tensor)
tensor.shape
tensor.ndim
tensor.dtype
tensor.device
zero_to_ten = torch.arange(start=0, end=10, step=1)
02. 랜덤, 영행렬, 일행렬
rand_tensor = torch.rand(4, 4)
rand_img_tensor = torch.rand(size=(3, 244, 244))
torch.manual_seed(0)
zeros = torch.zeros(size=(3, 4))
ten_zeros = torch.zeros_like(input=zero_to_ten)
ones = torch.ones(size=(3, 4))
ten_ones = torch.ones_like(input=zero_to_ten)
03. 타입 설정, 변환
tensor = torch.tensor([3.0, 6.0, 9.0], dtype=torch.float16)
tensor.type(torch.float64)
04. 연산 방법
tensor = torch.tensor([1, 2, 3])
tensor + 5, tensor - 5, tensor * 5, tensor / 4
"""
출력 결과
(tensor([6, 7, 8]),
tensor([-4, -3, -2]),
tensor([5, 10, 15]),
tensor([0.2500, 0.5000, 0.7500]))
"""
tensor * tensor
"""
출력 결과
tensor([1, 4, 9])
"""
torch.add(tensor, 10)
torch.subtract(tensor, 10)
torch.multiply(tensor, 10)
torch.divide(tensor, 10)
05. 행렬곱과 조건
tensor @ tensor
torch.matmul(tensor, tensor)
value = 0
for i in range(len(tensor)):
value += tensor[i] * tensor[i]
"""
행렬곱이 가능한 조건
- torch.Size([A, B]) @ torch.Size([B, C])
- 행렬곱을 할 때 B가 동일해야 한다.
- A와 C는 행렬곱의 결과의 size 가 된다. AxC
"""
06. 집계 메소드
x.min()
x.max()
x.sum()
x.type(torch.float32).mean()
x.argmin()
x.argmax()
torch.max(x)
torch.min(x)
torch.mean(x.type(torch.float32))
torch.sum(x)
07. shape, ndim 변형
Method |
One-line description |
torch.reshape(input, shape) |
size를 곱한 값의 약수만 reshape를 통해 shape를 바꿀 수 있다. |
torch.Tensor.view(shape) |
기존의 참조된 순서를 유지하며 형 변환. 인덱싱을 통해 값을 바꾸면 의도와 다르게 바뀔 수 있다. |
torch.stack(tensors, dim=0) |
Concatenate 를 axis 에 따라서 할 수 있다. 단 주어지는 tensor의 size가 같아야 한다. |
torch.squeeze(input) |
입력받은 tensor의 차원의 값이 1인 것을 제거 |
torch.unsqueeze(input, dim) |
1개의 1인 차원을 추가한 tensor 를 반환 |
torch.permute(input, dims) |
원하는 index 순서를 주어서 재배영한 tensor를 반환 |
08. 인덱싱은 numpy, pandas 와 상이
09. numpy 호환 방식
array = np.arange(1.0, 8.0)
tensor = torch.from_numpy(array)
array = torch.arange(1.0, 8.0, 1.0)
numpy_array = tensor.numpy()
10. GPU 설정
!nvidia-smi
torch.cuda.is_available()
torch.cuda.device_count()
device = 'cuda' if torch.cuda.is_available() else "cpu"
tensor.device
tensor = tensor.to(device)
tensor_on_gpu.cpu().numpy()
댓글