단순한 기울기 계산

  • z = 2x^2+3
In [0]:
# ¸ÕÀú ÆÄÀÌÅäÄ¡¸¦ ºÒ·¯¿É´Ï´Ù.
import torch
In [0]:
# x¸¦ [2.0,3.0]ÀÇ °ªÀ» °¡Áø ÅÙ¼­·Î ÃʱâÈ­ ÇØÁÖ°í ±â¿ï±â °è»êÀ» True·Î ÄÑ ³õ½À´Ï´Ù. 
# z = 2x^2+3

x = torch.tensor(data=[2.0,3.0],requires_grad=True)
y = x**2
z = 2*y +3
In [3]:
# https://pytorch.org/docs/stable/autograd.html?highlight=backward#torch.autograd.backward

# ¸ñÇ¥°ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. 
target = torch.tensor([3.0,4.0])

# z¿Í ¸ñÇ¥°ªÀÇ Àý´ë°ª Â÷À̸¦ °è»êÇÕ´Ï´Ù. 
# backward´Â ½ºÄ®¶ó °ª¿¡ ´ëÇؼ­ µ¿ÀÛÇϱ⠶§¹®¿¡ ±æÀÌ 2Â¥¸® ÅÙ¼­ÀÎ loss¸¦ torch.sumÀ» ÅëÇØ ÇϳªÀÇ ¼ýÀÚ·Î ¹Ù²ãÁÝ´Ï´Ù.
loss = torch.sum(torch.abs(z-target))

# ±×¸®°í ½ºÄ®¶ó °ªÀÌ µÈ loss¿¡ ´ëÇØ backward¸¦ Àû¿ëÇÕ´Ï´Ù.
loss.backward()

# ¿©±â¼­ y¿Í z´Â ±â¿ï±â°¡ NoneÀ¸·Î ³ª¿À´Âµ¥ ÀÌ´Â x,y,zÁß¿¡ x¸¸ÀÌ leaf nodeÀ̱⠶§¹®ÀÔ´Ï´Ù.
print(x.grad, y.grad, z.grad)
tensor([ 8., 12.]) None None
In [0]: