M.L (p.177)
sotfmax-with-loss 계층 그래프
softmax 와 cross entropy error 를 한꺼번에 순전파와 역전파로 구현한다.

순전파의 (3 layer에 한에)마지막 출력 값은 각 입력 값 y1, y2, y3 를 log 하고 정답레이블 t1,t2,t3 를 곱해 다 더한 값을 -1에 곱한 값이다.
역전파의 마지막 하류로 전해지는 값은 (y1 – t1), (y2 -t2), (y3 – t3) 이다. 이는 역전파로 전해지는 값이 변환된 입력 값과 정답 레이블 값과의 차이 이다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class SoftmaxWithLoss: def __init__(self): self.loss = None self.y = None self.t = None def forward(self,x,t): self.t = t self.y = softmax(x) self.loss = cross_entropy_error(self.y,self.t) return self.loss def backward(self,dout= 1): batch_size = self.t.shape[0] dx = (self.y - self.t) / batch_size return dx |