Pytorch Tensor vs tensor
Tensor vs tensor
Pytorch์์ ํ ์๋ฅผ ์์ฑํ ๋ ์ธ์ ์๋ ๋๊ฐ์ง ํจ์๊ฐ ์๋ค.
๋ฐ๋ก Tensor(), tensor()์ด๋ค.
์ด ๊ธ์ ๋ ํจ์์ ์ฐจ์ด์ ์ ๋ํด์ ์์๋ณด๋ ค๊ณ ์์ฑํ๋ค.
๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ๋น๊ต๋ฅผ ํด๋ณด์
print(f"tensor : {torch.tensor([1,2])}")
print(f"Tensor : {torch.Tensor([1,2])}")
print(f"tensor : {torch.tensor([1,2]).dtype}")
print(f"Tensor : {torch.Tensor([1,2]).dtype}")
''' output
tensor : tensor([1, 2])
Tensor : tensor([1., 2.])
tensor : torch.int64
Tensor : torch.float32
'''
์ฌ๊ธฐ์ ํ์ธํ ์ ์๋ ์ ์ Tensor()๋ type๋ฅผ Float ๊ณ ์ ์ด๋ฉฐ, tensor()๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ฐ๋ผ type์ด ๋ณํ๊ฒ ๋๋ค.
๋ํ Pytorch ๊ณต์ ๋ฌธ์์์ ๋ค์๊ณผ ๊ฐ์ด ๋ช ์๋์ด์๋ค.
- torch.tensor() : function
- torch.Tensor() : class
torch.tensor()๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ํญ์ data ํ๋ผ๋ฏธํฐ๊ฐ ์์ด์ผํ๋ค. torch.tensor(data)๋ ํญ์ data๋ฅผ ๋ณต์ฌํ์ฌ ํ ์๋ฅผ ์์ฑํ๋ค. ๊ฐ๋ตํ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
torch.tensor(data)
-> ํ
์
๋ก data
๋ฅผ ์
๋ ฅ๋ฐ์ ํ
์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
๋ฐ๋๋ก torch.Tensor()๋ ๋น์ด์๋ ํ ์๋ฅผ ์์ฑํ ์ ์๋ค.
๋ค์์ data
๋ก ์ค์นผ๋ผ ๊ฐ์ด ๋ค์ด์จ ๊ฒฝ์ฐ ๊ฐ๊ฐ ๋ค๋ฅธ output์ ๋ณด์ฌ์ค๋ค.
print(f"tensor : {torch.tensor(10)}")
print(f"Tensor : {torch.Tensor(10)}")
''' output
tensor : 10
Tensor : tensor([-2.1488e-25, 1.7110e-42, 0.0000e+00, 0.0000e+00, 0.0000e+00,0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00])
'''
torch.tensor๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ ๋ฐ๋ฉด์ torch.Tensor๋ n๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ ๋ชจ์ต์ด๋ค.
๋ค์์ Pytorch์์ ์๋ ๋ฏธ๋ถ์ ์ด์ฉํ๊ธฐ ์ํ requires_grad ํ๋ผ๋ฏธํฐ์ ์ ๋ฌด์ด๋ค.
torch.tensor([2.,3.], requires_grad=True)
# torch.Tensor([2.,3.], requires_grad=True) # error
''' output
tensor([2., 3.], requires_grad=True)
'''
torch.tensor()
์ ์ ์์ ์ผ๋ก ์คํ์ด ๋๋ ๊ฒ์ ๋ณผ์์๋ค. ๋ฐ๋ฉด์ ๊ฐ์ ๊ฐ์ ์
๋ ฅ์ผ๋ก ๋ฐ์ torch.Tensor()
์ ์ค๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
torch.Tensor()
์๋ requires_grad ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํ์ง ์์ง๋ง ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค.
torch.Tensor([2.,3.]).requires_grad=True
torch.tensor()
๋ data
๊ฐ ๋ฌด์กฐ๊ฑด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ์ธ๊ธฐ๋ฅผ ์ถ์ ํ ์์์ด ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํ๊ณ torch.Tensor()
๋ ๋น ํ
์ ๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒ์ผ๋ก ์๊ฐ๋๋ค.
๋ง์ง๋ง์ผ๋ก call by value, call by reference์ ๊ดํ ์ฐจ์ด์ ์ด๋ค.
torch.tensor()
์ ๊ฒฝ์ฐ call by vlaue
# torch.torch์ ๊ฒฝ์ฐ ๊ฐ์ ๋ณต์ฌํด Tensor ์์ฑ
a = torch.tensor([1])
new_a = torch.tensor(a)
print(f"a : {a},\nnew_a : {new_a}")
print("-"*20)
a[0] = 5
print(f"a : {a},\nnew_a : {new_a}")
''' output
a : tensor([1]),
new_a : tensor([1])
--------------------
a : tensor([5]),
new_a : tensor([1])
'''
torch.Tensor()
์ ๊ฒฝ์ฐ call by refrence
, call by value
๋๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
- call by refrence
# orch.Tensor์ Tensor ๊ฐ์ฒด๋ฅผ ๋ฐ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ ๋ณต์ฌํด ์จ๋ค.
a = torch.Tensor([1])
new_a = torch.Tensor(a)
print(f"a : {a},\nnew_a : {new_a}")
print("-"*20)
a[0] = 5
print(f"a : {a},\nnew_a : {new_a}")
''' output
a : tensor([1.]),
new_a : tensor([1.])
--------------------
a : tensor([5.]),
new_a : tensor([5.])
'''
- call by value
# torch.Tensor์ list๋ numpy๋ฅผ ๋ฐ์ผ๋ฉด ๊ฐ์ ๋ณต์ฌํด์จ๋ค
a = [1]
new_a = torch.Tensor(a)
print(f"a : {a},\nnew_a : {new_a}")
print("-"*20)
a[0] = 5
print(f"a : {a},\nnew_a : {new_a}")
''' output
a : [1],
new_a : tensor([1.])
--------------------
a : [5],
new_a : tensor([1.])
'''
์์ฝ
-
torch.tensor()
๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ๋ฐ๋ผ type์ด ์ ํด์ง,torch.Tensor()
๋ type๋ฅผ Float ๊ณ ์ -
torch.tensor()
:function
ํญ์ data ํ๋ผ๋ฏธํฐ๊ฐ ์์ด์ผํจ,
torch.Tensor()
:class
๋น์ด์๋ ํ ์๋ฅผ ์์ฑํ ์ ์๋ค. data
๋ก ์ค์นผ๋ผ ๊ฐ์ด ๋ค์ด์จ ๊ฒฝ์ฐtorch.tensor()
๋data
๊ทธ๋๋ก ์ถ๋ ฅtorch.Tensor()
๋ n๊ฐ์ ๋ฆฌ์คํธ๋ฅผ ์์ฑ
- requires_grad ํ๋ผ๋ฏธํฐ์ ์ ๋ฌด
torch.tensor()
๋data
๋ฅผ ๋ฐ์์ผํ๊ธฐ ๋๋ฌธ์ ์กด์ฌtorch.Tensor()
๋ ๋น ํ ์๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ ( ํ์ง๋ง ํจ์๋ก ์คํ ๊ฐ๋ฅ )
torch.tensor()
๋call by value
,
torch.Tensor()
๋ ์ ๋ ฅ์ด ํ ์์ด๋ฉดcall by refrence
, ์ ๋ ฅ์ด ๋ฆฌ์คํธ์ด๋ฉดcall by value
Leave a comment