[선택 과제 2] Backpropagation
210808
TODO 1
TODO 2
Backward_gradient
def backward_gradient(X, S, grad_out, wRec):
"""
X: input
S: 모든 input 시퀀스에 대한 상태를 담고 있는 행렬
grad_out: output의 gradient
wRec: 재귀적으로 사용되는 학습 파라미터
"""
# grad_over_time: loss의 state 에 대한 gradient
# 초기화
grad_over_time = np.zeros((X.shape[0], X.shape[1]+1))
grad_over_time[:,-1] = grad_out
# gradient accumulations 초기화
wx_grad = 0
wRec_grad = 0
for k in range(X.shape[1], 0, -1):
wx_grad += np.dot(grad_over_time[:,k], X[:,k-1])
wRec_grad += np.dot(grad_over_time[:,k], S[:,k-1])
grad_over_time[:,k-1] = grad_over_time[:,k] * wRec
return (wx_grad/n_samples, wRec_grad/n_samples), grad_over_time

Last updated