| μΌ | μ | ν | μ | λͺ© | κΈ | ν |
|---|---|---|---|---|---|---|
| 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 |
- μΈλλ³κ°λΉμ§μ»¬λ ν°
- μ¬μ΄ν·λ°
- ν΄λ¦°μ½λ
- 컨ν μ΄λκ°μ²΄
- sklearn
- RENAMETABLE
- ν
- λΆκ½λ°μ΄ν°μ
- Key μ’ λ₯
- Python
- μ£Όμ±λΆ μ°ΎκΈ°
- SQL
- 무결μ±μ μ§
- 무결μ±μ μ§λ©μ»€λμ¦
- DROPTABLE
- CREATETABLE
- latent factor model
- μκ³ λ¦¬μ¦
- latent factor
- Hyperlink Graphs
- knn_classify
- ALTERTABLE
- TDD
- 무결μ±
- λ°±μ€
- μ μ¬μμλͺ¨λΈ
- ν€ μ’ λ₯
- νμ΄μ¬
- SQLDDL
- λ¬Έμμ΄
- Today
- Total
DonHurry
step21. μ°μ°μ μ€λ²λ‘λ(2) λ³Έλ¬Έ
π’ λ³Έ ν¬μ€ν μ λ°λ°λ₯λΆν° μμνλ λ₯λ¬λ3μ κΈ°λ°μΌλ‘ μμ±νμμ΅λλ€. λ°°μ΄ λ΄μ©μ κΈ°λ‘νκ³ , κ°μΈμ μΈ κ³΅λΆλ₯Ό μν΄ μμ±νλ ν¬μ€ν μ λλ€. μμΈν λ΄μ©μ κ΅μ¬ ꡬ맀λ₯Ό κ°λ ₯ μΆμ²λ립λλ€.

μ΄λ² λ¨κ³μμλ μ΄μ΄μ μ°μ°μ μ€λ²λ‘λλ₯Ό μ§νν©λλ€. μ΄μ λ¨κ³μ ꡬνμ ν΅ν΄ Variable μΈμ€ν΄μ€ aμ bμ a + b κ°μ μ°μ°μ μνν μ μμμ΅λλ€. νμ§λ§ νμ¬λ a * np.array(3.0)μ΄λ 3 + aμ κ°μ ndarray μΈμ€ν΄μ€ λλ μμΉ λ°μ΄ν°μμ μ°μ°μ λΆκ°ν©λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν λ°©λ²μΌλ‘ λ€λ₯Έ λ°μ΄ν°λ€μ Variable μΈμ€ν΄μ€λ‘ λ³ννλ μμ μ μ§νν©λλ€. μ°μ variableλ‘ λ³κ²½νκΈ° μν ν¨μμ λλ€.
def as_variable(obj):
if isinstance(obj, Variable):
return obj
return Variable(obj)
μ΄μ Function ν΄λμ€μ __call__ λ©μλκ° as_variable ν¨μλ₯Ό μ΄μ©νλλ‘ λ³κ²½ν©λλ€.
class Function:
def __call__(self, *inputs):
inputs = [as_variable(x) for x in inputs]
xs = [x.data for x in inputs]
ys = self.forward(*xs)
...
λ€μμ νμ΄μ¬μ float, int λ±μ κ²½μ°μ λλ€. xκ° Variable μΈμ€ν΄μ€μΌ λ x + 2.0 κ°μ μ½λλ₯Ό μννκΈ° μν΄ κΈ°μ‘΄ ν¨μμ μ½λλ₯Ό μΆκ°νκ² μ΅λλ€. x1μ΄ floatμ΄λ intλΌλ©΄, ndarray μΈμ€ν΄μ€λ‘ λ³ν ν Function ν΄λμ€ λ΄λΆμμ λ€μ Variable μΈμ€ν΄μ€λ‘ λ³νλ©λλ€.
def add(x0, x1):
x1 = as_array(x1)
return Add()(x0, x1)
μμ§ λ¬Έμ μ μ΄ λ¨μμμ΅λλ€. μ°μ°μ μ€λ²λ‘λμμλ x * 2.0κ³Ό 2.0 * xλ λ€λ₯Έ λ¬Έμ μ λλ€. νμ¬λ 2.0 * xλ₯Ό μνν κ²½μ° μ€λ₯κ° μκΉλλ€. μ°μ μ€ννμ λ μ€λ₯κ° λ°μνλ κ³Όμ μ λ³΄κ² μ΅λλ€.
1. μ°μ°μ μΌμͺ½μ μλ 2.0μ __mul__ λ©μλλ₯Ό νΈμΆνλ € μλνλ€.
2. νμ§λ§ 2.0μ float νμ μ΄λ―λ‘ __mul__ λ©μλλ ꡬνλμ΄ μμ§ μλ€.
3. λ€μμ * μ°μ°μ μ€λ₯Έμͺ½μ μλ xμ νΉμ λ©μλλ₯Ό νΈμΆνλ € μλνλ€.
4. xκ° μ€λ₯Έμͺ½μ μκΈ° λλ¬Έμ (__mul__λμ ) __rmul__ λ©μλλ₯Ό νΈμΆνλ € μλνλ€.
5. νμ§λ§ Variable μΈμ€ν΄μ€μλ __rmul__ λ©μλκ° κ΅¬νλμ΄ μμ§ μλ€.
λ°λΌμ __rmul__ λ©μλλ ν¨κ» ꡬνν΄μΌν©λλ€. μ°μ°μ μ€λ²λ‘λμ κ΄ν΄ λ κΆκΈν μ μ μ§μ μ°Ύμ보λ κ±Έ μΆμ²λ립λλ€. νΉν C++ κ°μ μΈμ΄μμ λ€λ£¨λ κ²½μ°κ° λ§μ΅λλ€. DeZeroμ νΉμ λ©μλλ λ€μκ³Ό κ°μ΄ μ€μ ν©λλ€.
Variable.__add__ = add
Variable.__radd__ = add
Variable.__mul__ = mul
Variable.__rmul__ = mul
λ§μ§λ§μΌλ‘ λ€μκ³Ό κ°μ΄ μ’νμ΄ ndarray μΈμ€ν΄μ€κ³ μ°νμ΄ VariableμΈ κ²½μ°λ ν΄κ²°ν΄μΌν©λλ€. μ’νμ ndarray μΈμ€ν΄μ€μ __add__ λ©μλκ° μλ μ°νμ Variable μΈμ€ν΄μ€μ __radd__ λ©μλκ° νΈμΆλμ΄μΌν©λλ€.
x = Variable(np.array([1.0]))
y = np.array([2.0]) + x
μμ κ°μ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ μ°μ°μ μ°μ μμλ₯Ό μ§μ νκ² μ΅λλ€. Variable μΈμ€ν΄μ€ μμ±μ __array_priority__λ₯Ό μΆκ°νκ³ ν° μ μ κ°μΌλ‘ μ€μ ν©λλ€.
class Variable:
__array_priority__ = 200
...'DeZero > π»μ 2κ³ μ§' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| step23. ν¨ν€μ§λ‘ μ 리 (0) | 2023.01.24 |
|---|---|
| step22. μ°μ°μ μ€λ²λ‘λ(3) (0) | 2023.01.23 |
| step20. μ°μ°μ μ€λ²λ‘λ(1) (0) | 2023.01.21 |
| step19. λ³μ μ¬μ©μ± κ°μ (0) | 2023.01.20 |
| step18. λ©λͺ¨λ¦¬ μ μ½ λͺ¨λ (0) | 2023.01.19 |