728x90
Indexing
1) 인덱스 접근
import torch
a = torch.tensor([[1, 2, 3], [4, 5, 6]])
print('a:', a)
# 첫 번째 행, 두 번째 열의 원소에 접근
print('a[0][1]:', a[0][1])
print('a[0, 1]:', a[0, 1])
결과값
a: tensor([[1, 2, 3],
[4, 5, 6]])
a[0][1]: tensor(2)
a[0, 1]: tensor(2)
2) 슬라이스
import torch
a = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
print('a:', a)
# 첫 번째 차원이 0인 슬라이스에 접근
print('a[0, :, :]:', a[0, :, :])
# 마지막 차원에서 뒤에서 두 번째 원소까지 슬라이싱
print('a[:, :, :-2]:', a[:, :, :-2])
결과값
a: tensor([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
a[0, :, :]: tensor([[1, 2],
[3, 4]])
a[:, :, :-2]: tensor([[[1],
[3]],
[[5],
[7]]])
Numpy & Tensor
NumPy 배열과 파이토치 텐서(Tensor)를 쉽게 변환하여 사용할 수 있다.
1) Numpy -> Tensor 변환
import numpy as np
import torch
# NumPy 배열 생성
a = np.array([[1, 2], [3, 4]])
# NumPy 배열을 파이토치 텐서로 변환
a_tensor = torch.from_numpy(a)
print('a:', a)
print('a_tensor:', a_tensor)
# 파이토치 텐서에서 인덱싱을 사용하여 값 변경
a_tensor[0, 0] = 0
# 파이토치 텐서를 NumPy 배열로 변환
a_new = a_tensor.numpy()
print('a_new:', a_new)
print('a:', a)
결과값
a: [[1 2]
[3 4]]
a_tensor: tensor([[1, 2],
[3, 4]], dtype=torch.int64)
a_new: [[0 2]
[3 4]]
a: [[0 2]
[3 4]]
* Numpy의 메모리를 Tensor도 같이 바라본다.
2) dtype
Numpy의 경우 기본 type이 float64
Tensor의 경우 기본 type이 float32
import numpy as np
import torch
# NumPy 배열 생성
a = np.array([1.0, 2.0, 3.0])
# NumPy 배열을 파이토치 텐서로 변환
a_tensor = torch.from_numpy(a)
print('a:', a)
print('a_tensor:', a_tensor)
print('a_tensor.dtype:', a_tensor.dtype)
결과값
a: [1. 2. 3.]
a_tensor: tensor([1., 2., 3.], dtype=torch.float64)
a_tensor.dtype: torch.float64
tensor을 numpy로 변환 시 type을 따라간다.
Reproducibility
머신러닝 모델의 학습 결과를 다른 컴퓨터나 환경에서도 동일하게 재현할 수 있는 성질을 의미한다.
파이토치(PyTorch)에서는 재현성을 보장하기 위해 여러 방법이 있지만 seed를 알아보자.
시드(seed) 값 설정: 파이토치에서는 시드 값을 설정하여 난수 생성을 일정하게 만들 수 있다.
시드 값은 torch.manual_seed() 함수를 사용하여 설정할 수 있다.
import torch
# 시드 값 설정
torch.manual_seed(42)
a = torch.rand(2, 3)
# 시드 값 설정
torch.manual_seed(42)
b = torch.rand(2, 3)
print('a:', a)
print('b:', b)
728x90
SMALL
'인공지능 > PyTorch' 카테고리의 다른 글
PyTorch - GPU 설정 (7) (0) | 2023.04.24 |
---|---|
PyTorch - 파이토치 기초 (5) (0) | 2023.04.23 |
PyTorch - 파이토치 기초 (4) (2) | 2023.04.23 |
PyTorch - 파이토치 기초 (3) (0) | 2023.04.18 |
PyTorch - 텐서란? (2) (0) | 2023.04.18 |