개발로 자기계발
article thumbnail
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
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)