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.])

'''

์š”์•ฝ

  1. torch.tensor()๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ type์ด ์ •ํ•ด์ง, torch.Tensor()๋Š” type๋ฅผ Float ๊ณ ์ •

  2. torch.tensor() : function ํ•ญ์ƒ data ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ์–ด์•ผํ•จ,
    torch.Tensor() : class ๋น„์–ด์žˆ๋Š” ํ…์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  3. data๋กœ ์Šค์นผ๋ผ ๊ฐ’์ด ๋“ค์–ด์˜จ ๊ฒฝ์šฐ
    • torch.tensor()๋Š” data ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
    • torch.Tensor()๋Š” n๊ฐœ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑ
  4. requires_grad ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์œ ๋ฌด
    • torch.tensor()๋Š” data๋ฅผ ๋ฐ›์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์กด์žฌ
    • torch.Tensor()๋Š” ๋นˆ ํ…์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—†์Œ ( ํ•˜์ง€๋งŒ ํ•จ์ˆ˜๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ )
  5. torch.tensor()๋Š” call by value,
    torch.Tensor()๋Š” ์ž…๋ ฅ์ด ํ…์„œ์ด๋ฉด call by refrence, ์ž…๋ ฅ์ด ๋ฆฌ์ŠคํŠธ์ด๋ฉด call by value

Categories:

Updated:

Leave a comment