AI TECH
torch.tensor와 torch.Tensor의 차이
prefer_all
2022. 9. 26. 17:27
둘 다 data에 대해 tensor 객체로 만들어주는 기능은 동일하다.
torch.tensor | torch.Tensor |
python function | python class |
항상 data를 복사하기 때문에 data가 필수 argument임 |
이미 존재하는 데이터를 tensor로 바꾸고 싶을 때, 빈 tensor 객체를 만들 때 사용할 수 있음 |
입력받은 데이터를 새로은 메모리 공간에 복사해 tensor 객체를 생성(call by value) | [1] tensor 객체로 데이터 입력시 입력 받은 메모리 공간을 그대로 사용하고(call by reference) [2] list나 numpy로 데이터 입력시 입력 받은 값을 복사해 Tensor 객체로 생성한다(call by value) |
int 입력 시 그래도 int | int 입력시 float로 바뀜 |
torch.tensor
import torch
import numpy as np
# torch.Tensor은 list나 numpy를 받으면 값을 복사해온다
original_data = [1]
new_data = torch.Tensor(original_data)
print(f"original : {original_data} \nnew : {new_data}")
# original data를 수정하자
original_data[0] = 2
print(f"original : {original_data} \nnew : {new_data}")
'''
original : [1]
new : tensor([1.])
original : [2]
new : tensor([1.]) #new는 안바뀜
'''
- int로 받아 int로 생성된 것을 볼 수 있다.
- original data를 바꿔도 new Tensor의 값은 바뀌지 않는다.
torch.Tensor
import torch
import numpy as np
# torch.Tensor은 Tensor 객체를 받으면 메모리 주소값을 복사해 온다.
original_data = torch.Tensor([1])
new_data = torch.Tensor(original_data)
print(f"original : {original_data} \new : {new_data}")
# original data를 수정
original_data[0] = 2
print(f"original : {original_data} \nnew : {new_data}")
'''
original : tensor([1.]) #int가 float로 바뀜
ew : tensor([1.])
original : tensor([2.])
new : tensor([2.]) # new도 바뀜
'''
- int가 float형으로 바뀐 것을 볼 수 있다
- input이 Tensor객체인 경우 original Tensor 값을 변경하니 new Tensor 값도 덩달아 바뀐 것을 볼 수 있다