Numpy vs Torch

Numpy와 Torch의 차이

  • Numpy는 일반적인 ML을 위해서 이용되나, Torch Tensor는 무거운 행렬연산에 최적화되어 GPU 사용을 지원
  • Torch Tensor는 Tensor 생성시 추가 Parameter로 device_type과 require_grad를 옵션으로 지원

랜덤시드

np.random.seed(202206)
torch.manual_seed(202206) # for both CPU and CUDA

생성시

import numpy as np
import torch

np_random = np.random.random((4, 4))
torch_random = torch.rand(4, 4)

Size 파악시

array = [[1,2],[3,4]]
np_array = np.array(array)
torch_array = torch.tensor(array)

print(np_array.shape == torch_array.shape)
print(np_array.shape == torch_array.size())
print(np_array.reshape(4, 1).shape)
print(torch_array.view(4,1).shape)

차원 추가

np.expand_dims(np_random, axis=0).shape
torch.from_numpy(np_random).unsqueeze(0).shape

판별식

  • 행렬식은 아직은 Numpy만 제공
np.linalg.det(np_array)

역행렬

np_random = np.random.random((4, 4))
# Inverse
np.linalg.inv(np_random)
torch.inverse(torch.from_numpy(np_random))

# 유사역행렬
np.linalg.pinv(np_random)
torch.pinverse(torch.from_numpy(np_random))

전치행렬

np_random.T
np_random.transpose()
torch.from_numpy(np_random).T

세이브 및 로드

np.save('file.npy', np_random)
np.load('file.npy')

torch.save(torch.from_numpy(np_random), 'file')
torch.load('file')

References