class MulLayer:
# 곱셈 계층
def __init__(self) -> None:
self.x = None
self.y = None
def forward(self, x, y):
# 순전파, x와 y의 값을 저장해야만 backward때 사용할 수 있다.
self.x = x
self.y = y
out = x * y
return out
def backward(self, dout):
# 역전파로 상위 계층에서의 미분 값 * 반대 노드의 값을 출력한다.
dx = dout * self.y
dy = dout * self.x
return dx, dy
class AddLayer:
# 덧셈 계층
def __init__(self) -> None:
pass
def forward(self, x, y):
# 순전파, x와 y 값을 저장하지 않아도 된다.
out = x + y
return out
def backward(self, dout):
dx = dout * 1
dy = dout * 1
return dx, dy
해당 구현의 나오는 이론은
https://hi-guten-tag.tistory.com/211
참조하면 될 것 같습니다.
'인공지능 > 머신러닝' 카테고리의 다른 글
[머신러닝 - Python] SIgmoid 계층 구현 (Sigmoid Class Implementation) (1) | 2022.08.20 |
---|---|
[머신러닝 - Python] ReLU 계층 구현 (ReLU class implementation) (0) | 2022.08.20 |
[머신러닝 - 이론] 오차 역전파, 오류 역전파 (Back Propagation) (0) | 2022.08.13 |
[머신러닝 - 이론] 수치 미분 (Numerical Differentiation) (0) | 2022.08.12 |
[머신러닝 - Python] 2층 신경망 구현 (Two Layer Net Implementation) (0) | 2022.08.06 |