Python/Pytorch

[Pytorch] torch.Tensor vs torch.tensor

언킴 2022. 7. 5. 20:09
반응형

 

non-data

torch.Tensor와 torch.tensor는 같으면서도 다른 역할을 한다. 기본적으로 torch.Tensor는 데이터를 입력하지 않더라도 사용이 가능하지만 torch.tensor의 경우에는 데이터를 무조건 넣어주어야 한다. 

torch.Tensor()
# tensor([])

torch.tensor()
# Traceback (most recent call last):
#  File "<stdin>", line 1, in <module>
# TypeError: tensor() missing 1 required positional arguments: "data"

torch.tensor(())
# tensor([])

 

dimension

추가적으로 가장 중요하다고 생각하는 차이점이 있는데, 아래의 예시를 통해 살펴보자.

torch.Tensor(10)
# tensor([8.9683e-44, 0.0000e+00, 4.4842e-44, 0.0000e+00, 7.0392e+08, 3.0859e-41,
#         7.4066e+28, 1.2195e+01, 0.0000e+00, 0.0000e+00])

torch.tensor(10)
# tensor(10)

torch.Tensor(10)을 사용하면 10 차원의 tensor를 반환하는 반면, torch.tensor(10)을 사용하면 하나의 tensor가 출력된다.

 

 

dtype

마지막으로는 dtype이 다르다. 

torch.Tensor([10]).dtype
# torch.float32

torch.tensor([10]).dtype
# torch.int64

torch.Tensor는 기본적으로 float32 형태로 데이터를 반환하지만, torch.tensor는 int64를 반환한다. 이와 같은 차이점을 정확하게 인지하고 본인의 분석에 맞는 함수를 사용하면 된다.