2016-08-23 12 views
2

저는 tensorflow에서 그물을 만들고 있습니다.이 벡터는 출력물 인 softmax를 통과하게됩니다.softmax의 출력에는 0이 없어야합니다. 맞습니까?

이제 나는 이것을 시험해 보았습니다. softmax를 통과 한 벡터는 모든 좌표에서 0을 가졌습니다.

지수가있는 softmax의 정의를 기반으로, 나는 이것이 일어나지 않아야한다고 생각했습니다. 이 오류가 있습니까?

편집 : 내 벡터는 120x160 = 192000입니다. 모든 값은 float32입니다.

답변

3

오류가 아닐 수도 있습니다. Softmax의 입력을 살펴 봐야합니다. 이 벡터는 매우 음의 값과 단일의 매우 양수 값을 가질 가능성이 큽니다. 이것은 모든 0과 하나의 하나의 값을 포함하는 softmax 출력 벡터가 될 것입니다.

당신은 softmax 분자가 기하 급수적으로 제로가되어서는 안된다는 점을 올바르게 지적했습니다. 그러나 부동 소수점 정밀도로 인해 분자는 매우 작은 값, 예를 들어 exp (-50000) 일 수 있습니다.이 값은 본질적으로 0입니다.

+0

당신은 옳았습니다. 값이 너무 부정적이거나 너무 크지는 않지만 lrn 레이어를 추가하여 값을 줄이고 전체를 정규화했습니다. (비록 계산 시간이 대략 두 배가되었지만 lrn에는 GPU를위한 방법이 없기 때문에 GPU에서 그물을 훈련 시키려고하면 결국 더 나쁠 수 있습니다.) –

관련 문제