Relu_code

Relu function으로 입력 값 x <= 0 이면 0을 , x > 0 이면 x 자체를 출력하는 function이다. Relu에 대한 이미지 검색결과

순전파 시에는 x <= 0 에 해당하는 값을 0으로 만들어 주어야한다. 그래서 grad = (x<= 0 ) 을 써서 grad 라는 변수에 x <= 0 인 값들을 True로 저장한다.

out = x.copy() -> x배열을 복사해 out이라는 변수에 대입하고 out[grad] = 0  ->

out[grad]는 x배열이 복사된 out에 grad 의 True에 해당하는 인덱스에만 0을 대입한다. 그리고 out을 출력하면 결과가 출력된다.

 

역전파 시에는 편미분의 결과가 0을 미분하면 0 이며, x를 미분하면 계수 1 이기 때문에 0인 인덱스는 0을 출력하고 0이 아닌 인덱스는 * 1 을 해주면 된다. 우리는 relu 라는 class에 x <= 0 인 인덱스 True로 저장해놓은 grad 변수가 있기 때문에 불러와 상류에서 전해져 오는 dout 값을 dout[grad] = 0 으로 변화시키고, 하류로 흘려보내는 dx 값에 dout 을 그대로 대입해주면 된다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다