ANN을 구현하려고하는데 backpropagation에 대한 수치 그라디언트 검사를 작성했습니다. 시그 모이 드 함수를 사용하면 수치 그라디언트 검사가 올바르게 작동합니다.
그러나 relu 활성화를 사용하면 그라디언트 검사가 실패합니다.relu 그라디언트를 확인하는 방법
switch opts.act_function
case 'relu'
d_act = a{i} > 0;
case 'sigmoid'
d_act = a{i} * (1 - a{i});
end
내 문제는 내가 0 0의 subgradient을 설정하면 0에서 아니 그라디언트가 없다는 것입니다,이 올바른지 다음과 같이
내가 얻는 구배는 기록?
정확히 무엇이 실패합니까? 아니면'x = 0'에서의 그래디언트가 어떨지에 대한 질문입니까? – hbaderts
무게 기울기를 확인하지 못합니다. 그라디언트를 검사하기 위해'dw = f (w + epsilon) - f (w-epsilon)/(2 * 엡실론)'을 사용합니다. Sigmoid 정품 인증을 사용할 때 이것은 정확하지만 relu 정품 인증을 사용하면 실패합니다. 그래서'x = 0' 일 때 올바른 그래디언트를 설정해야합니다. –