로딩
요청 처리 중입니다...

numpy로 딥러닝 직접 구현하기

 numpy로 딥러닝 직접 구현하기

그라디언트 구하기 학습 데이터 X가 레이어를 거쳐서 O가 되고, 손실 함수값 L이 되는 상황을 가정합시다. 역전파를 하면서 레이어 출력과 똑같은 shape의 그라디언트를 얻도록 합니다.

상위 레이어로 가는 그라디언트는 체인-룰을 따라 만들어 냅니다. 레이어 출력에 대한 입력 편미분 값은 영향을 준 변수들 각각의 미분 값의 합입니다.

따라서 아래와 같은 그라디언트 행렬의 곱을 생각할 수 있습니다. 이것은 numpy.matmul을 통해 간단하게 처리할 수 있습니다.

그런데 배치 처리를 하는 경우에는 어떻게 해야 합니까? 이제 데이터는 벡터가 아닌 행렬의 형태로 흐릅니다.

그라디언트 또한 확장되죠. 이럴 땐 아까와 같이 numpy.matmul을 사용할 수 없습니다.

이 계산을 처리하기 위해 numpy의 axis를 고려할 수 있습니다. numpy.newaxis는 차원 확장을 reshape보다 유용하게 수행할 수 있습니다. np.array([[1,2,3], [4,5,6]])[:, np.new...

# 딥러닝 # 레이어 # 오차역전파