2013-04-23 3 views
2

저는 신경망을 가지고 놀았습니다. 나는 너무 많은 문제없이 XOR 함수를 근사하는 것으로 시작했다. 그렇지만 sqrt 함수를 근사화하는 문제를 공격했습니다.신경망에서 실수를 처리하는 방법은 무엇입니까?

문제는 입력뿐만 아니라 출력 어떤 실수뿐만 아니라 숫자] 0.1 [

내가 신경망에 그 처리 할 수있는 방법이인가 될 수 있다는 것이 할 수 있도록 실수를 직접 출력합니까?

또는 입력 및 출력 데이터를 [0,1] 범위로 정규화해야합니까? 저것은 정밀도의 손실이지 않는가?

감사

당신은 당신의 출력 층, 예를 들어, 다른 활성화 기능을 선택할 수 있습니다

답변

1

마지막으로, 가장 합리적이고 일반적인 해결책은 입력을 표준화 한 다음 출력을 역 정규화하는 것이 었습니다.

사용자는 입력/출력 범위를 설정해야하며 모든 것이 잘 작동합니다.

이것은 대부분의 신경망 프레임 워크에서 수행됩니다.

2

g (a) = a (동일성). 그러나 비선형 함수를 근사화하는 비선형 활성화 함수 (tanh, logistic)가있는 숨겨진 레이어가 있어야합니다.

+0

방금 ​​시도했습니다. 숨겨진 레이어의 활성화 함수로 tanh 또는 sigmoid를 사용한 다음 출력 레이어에서 ID 활성화 함수를 사용하면 Infinity가되는 가중치에 몇 가지 문제가 있습니다 ... 이는 내 backpropagation 알고리즘에 문제가있는 것 같습니다. . –

+1

그것이 내가 그런 쉬운 문제를 생각할 수있는 유일한 이유입니다. 올바른 구현을 보는 것이 도움이 될 수 있습니다. https://github.com/AlexanderFabisch/OpenANN/blob/master/src/FullyConnected.cpp (함수 : forwardPropagate 및 backpropagate; 행렬 작업 포함) – alfa

관련 문제