
612
3
딥러닝의 기반 지식
보다시피 매우 간단하죠! 앞 단락에서의 내용을 상기해보면, 매 에포크의 학습과 검증을 시작
할 때 모델의
reset
메서드를 호출한다는 사실을 알 수 있습니다.
이처럼 콜백은 간단하지만 효과적입니다. 예를 하나 더 살펴보죠. 아래는
RNN
의 정규화 (
AR
및
TAR
)를 추가하는 콜백의 소스 코드입니다.
class RNNRegularizer(Callback):
def __init__(self, alpha=0., beta=0.): self.alpha,self.beta = alpha,beta
def after_pred(self):
self.raw_out,self.out = self.pred[1],self.pred[2]
self.learn.pred = self.pred[0]
def after_loss(self):
if not self.training: return
if self.alpha != 0.:
self.learn.loss += self
.alpha * self.out[-1].float().pow(2).mean()
if self.beta != 0.:
h = self.raw_out[-1]
if len(h)>1:
self.learn.loss += self.beta * (h[:,1:] - h[:,:-1]
).float().pow ...