
from Scratch
275
elif x > 100: return 1
em2x = math.exp(-2 * x)
return (1 - em2x) / (1 + em2x)
class Tanh(Layer):
def forward(self, input: Tensor) -> Tensor:
#
역방향에서
필요한
tanh
의
결괏값을
저장
self.tanh = tensor
_
apply(tanh, input)
return self.tanh
def backward(self, gradient: Tensor) -> Tensor:
return tensor
_
combine(
lambda tanh, grad: (1 - tanh ** 2) * grad,
self.tanh,
gradient)
큰 모델의 경우,
Relu
또한 자주 사용한다.
Relu
는 음수인 입력값에 대해서는
0
을 반환하지만 양수인 입력값에 대해서는 입력값을 그대로 반환한다.
class Relu(Layer):
def forward(self, input: Tensor) -> Tensor:
self.input = input
return tensor
_
apply(lambda x: max(x, 0), input)
def backward(self, gradient: Tensor) ...