본문 바로가기
Pytorch

[Pytorch] Numpy에서 Tensor로

by xangmin 2021. 6. 21.
반응형

 PyTorch에서 Numpy array를 Tensor 자료형으로 바꾸기 위한 방법을 알아보자. 데이터를 읽어와서 네트워크의 입력인 Tensor로 변환하여 Dataset를 만드는데 다음과 같은 연산이 필요하다. Pytorch의 2가지 변환함수와 그 차이점은 아래와 같다.

 

torch.Tensor() 와 torch.from_numpy()

 torch.Tensor() 는 Numpy array의 사본일 뿐이다. 그래서 tensor의 값을 변경하더라도 Numpy array자체의 값이 달라지지 않는다. 하지만 torch.from_numpy()는 자동으로 input array의 dtype을 상속받고 tensor와 메모리 버퍼를 공유하기 때문에 tensor의 값이 변경되면 Numpy array값이 변경된다. 예시를 통해 알아보자.

 

 

Numpy에서 Teonsor로

torch.Tensor() 

teonsor로 변환할 때 새 메모리를 할당한다.

import torch
import numpy as np
a=np.array([1,2,3,4])
b=torch.Tensor(a)
print('output tensor:',b)

b[0]=-1
print('It cannot change np.array:',a)

실행결과

 

torch.from_numpy()

tensor로 변환할 때, 원래 메모리를 상속받는다. (=as_tensor())

a=np.array([1,2,3,4])
b=torch.from_numpy(a)
print('output tensor:',b)

b[0]=-1
print('It can change np.array:',a)

실행결과

 

Tensor에서 Numpy로

numpy()

반대로 Tensor를 Numpy array로 바꾸고 싶다면 numpy함수를 사용하면 된다. 사용법은 아래와 같다.

import torch
import numpy as np

a = torch.rand(3,3)
b = a.numpy()

 

Reference

https://sanghyu.tistory.com/19

반응형

'Pytorch' 카테고리의 다른 글

[Pytorch] Custom dataset & dataloader 만들기  (0) 2021.06.21
[Pytorch] CNN을 이용한 MNIST  (0) 2021.06.07
[Pytorch] DNN을 이용한 MNIST  (0) 2021.06.07
[Pytorch] 튜토리얼(2)  (0) 2021.05.17
[Pytorch] 튜토리얼(1)  (0) 2021.05.17

댓글