가중치와 편향을 이용해 결과값을 도출하는 과정을 Affine(아핀) layer라고 정의한다 Affine layer 과정에서 나온 결과값을 Sigmoid 함수를 이용해 비선형화 하는 것을 Sigmoid layer라고 정의한다 앞에서 설명된 신경망 추론과정과 그에 매칭시켜 구현하기 위한 구성도는 아래와 같다.
구현 규칙 :
파이썬을 이용해 위 모델을 구현시 Affine, Sigmoid 모두 클래스로 구현할 것이며
각 클래스는 params, grads 속성을 갖도록 한다
params는 가중치 행렬과 편향행렬을 저장한다,
grads는 params에 저장된 각 행렬에 대응되는 기울기(미분)행렬을 저장
각 클래스는 신경망 추론, 학습과정을 위해 대표 함수 forward를 제작하여 제공하도록 한다.
Affine layer 클래스 구현소스
class Affine:
def __init__(self, W, b):
self.params = [W, b]
def forward(self, x):
W, b = self.params
out = np.matmul(x, W) + b
return out
Sigmoid layer 클래스 구현소스
class Sigmoid:
def __init__(self):
self.params = []
def forward(self, x):
return 1 / (1 + np.exp(-x))
이제 신경망의 기본이 되는 위 두개 클래스 Affine과 Sigmoid를 이용하여 신경망 추론을 모델링한 클래스를 제작한다