| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Python
- RENAMETABLE
- SQL
- latent factor
- ์ปจํ ์ด๋๊ฐ์ฒด
- SQLDDL
- CREATETABLE
- ๋ฌธ์์ด
- ์ธ๋๋ณ๊ฐ๋น์ง์ปฌ๋ ํฐ
- ์ ์ฌ์์๋ชจ๋ธ
- ๋ฌด๊ฒฐ์ฑ
- ๋ฌด๊ฒฐ์ฑ์ ์ง
- ALTERTABLE
- ์ฌ์ดํท๋ฐ
- ๋ฐฑ์ค
- DROPTABLE
- ์๊ณ ๋ฆฌ์ฆ
- ํ์ด์ฌ
- ๋ถ๊ฝ๋ฐ์ดํฐ์
- Key ์ข ๋ฅ
- ์ฃผ์ฑ๋ถ ์ฐพ๊ธฐ
- TDD
- ๋ฌด๊ฒฐ์ฑ์ ์ง๋ฉ์ปค๋์ฆ
- ํค ์ข ๋ฅ
- ํ
- Hyperlink Graphs
- latent factor model
- sklearn
- knn_classify
- ํด๋ฆฐ์ฝ๋
- Today
- Total
DonHurry
step14. ๊ฐ์ ๋ณ์ ๋ฐ๋ณต ์ฌ์ฉ ๋ณธ๋ฌธ
๐ข ๋ณธ ํฌ์คํ ์ ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋3์ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ์์ต๋๋ค. ๋ฐฐ์ด ๋ด์ฉ์ ๊ธฐ๋กํ๊ณ , ๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์์ฑํ๋ ํฌ์คํ ์ ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ต์ฌ ๊ตฌ๋งค๋ฅผ ๊ฐ๋ ฅ ์ถ์ฒ๋๋ฆฝ๋๋ค.

ํ์ฌ์ DeZero๋ ๊ฐ์ ๋ณ์๋ฅผ ๋ฐ๋ณตํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋๋๋ก ๋์ํ์ง ์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋์ ์์๋ฅผ ๋ณด์์ฃ .

y์ ๊ฐ์ ์ ์์ ์ผ๋ก ๊ณ์ฐ๋์ง๋ง, ์ญ์ ํ์์ ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋์์ต๋๋ค. ์ ๋๋ก ๊ณ์ฐํ๋ฉด $y=x+x$์ผ ๋ $y=2x$๊ฐ ๋๋ฏ๋ก ๋ฏธ๋ถ๊ฐ์ 2๊ฐ ๋์ด์ผ ํฉ๋๋ค.
x = Variable(np.array(3.0))
y = add(x, x)
print(y.data) # 6.0
y.backward()
print(x.grad) # 1.0
๋ฌธ์ ์ ์์ธ์ Variable ํด๋์ค์ ์์ต๋๋ค. ์ด์ ์ฝ๋์์๋ ๊ฐ์ ๋ณ์๋ฅผ ๋ฐ๋ณตํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ํ๋๋ ๋ฏธ๋ถ๊ฐ์ด ๋ฎ์ด ์จ์ง๋๋ค. ๋ฐ๋ผ์ ์ด๋ฏธ ๋ฏธ๋ถ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๋ก ์ ๋ฌ๋ ๋ฏธ๋ถ๊ฐ์ ๋ํด์ฃผ๋๋ก ์์ ํ์ฌ์ผํฉ๋๋ค.
# ๋ณ๊ฒฝ ์
def backward(self):
...
for x, gx in zip(f.inputs, gxs):
x.grad = gx
if x.creator is not None:
funcs.append(x.creator)
# ๋ณ๊ฒฝ ํ
def backward(self):
...
for x, gx in zip(f.inputs, gxs):
if x.grad is not None:
x.grad = gx
else:
x.grad = x.grad + gx
if x.creator is not None:
funcs.append(x.creator)
์์ง ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋จ์์์ต๋๋ค. ๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ณ์ฐ์ ํ ๊ฒฝ์ฐ์ ๋๋ค. x๋ฅผ ์ฌ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ๊ฒฐ๊ณผ์ ๊ฐ์ด ๋ํด์ ธ ์๋ชป๋ ๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค. 3.0์ด ๋์์ผํ์ง๋ง 5.0์ด ๋์์ต๋๋ค.
x = Variable(np.array(3.0))
y = add(x, x)
y.backward()
print(y.data) # 6.0
print(x.grad) # 2.0
y = add(add(x, x), x)
y.backward()
print(y.data) # 9.0
print(x.grad) # 5.0
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Variable ํด๋์ค์ ๋ฏธ๋ถ๊ฐ์ ์ด๊ธฐํํ๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
class Variable:
...
def cleargrad(self):
self.grad = None
๊ฐ์ ๋ณ์๋ฅผ ์ฌ์ฌ์ฉํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด cleargrad ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ๋ฏธ๋ถ๊ฐ์ ์ด๊ธฐํํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ ์คํธํด๋ณด๋ฉด ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
x = Variable(np.array(3.0))
y = add(x, x)
y.backward()
print(y.data) # 6.0
print(x.grad) # 2.0
x.cleargrad() # or x = Variable(np.array(3.0))
y = add(add(x, x), x)
y.backward()
print(y.data) # 9.0
print(x.grad) # 3.0
'DeZero > ๐ป์ 2๊ณ ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| step16. ๋ณต์กํ ๊ณ์ฐ ๊ทธ๋ํ(๊ตฌํ ํธ) (0) | 2023.01.17 |
|---|---|
| step15. ๋ณต์กํ ๊ณ์ฐ ๊ทธ๋ํ(์ด๋ก ํธ) (0) | 2023.01.16 |
| step13. ๊ฐ๋ณ ๊ธธ์ด ์ธ์(์ญ์ ํ ํธ) (2) | 2023.01.14 |
| step12. ๊ฐ๋ณ ๊ธธ์ด ์ธ์(๊ฐ์ ํธ) (0) | 2023.01.13 |
| step11. ๊ฐ๋ณ ๊ธธ์ด ์ธ์(์์ ํ ํธ) (0) | 2023.01.12 |