반응형
Tensorflow의 회귀 모델에 대한 다양한 게시물에서 몇 가지 다른 평균 제곱 오류 손실 함수를 보았습니다.
loss = tf.reduce_sum(tf.pow(prediction - Y,2))/(n_instances)
loss = tf.reduce_mean(tf.squared_difference(prediction, Y))
loss = tf.nn.l2_loss(prediction - Y)
이들의 차이점은 무엇입니까?
해결 방법
세 번째 방정식은 다르지만 첫 번째와 두 번째 방정식은 공식적으로 동일하지만 수치 적 문제로 인해 다르게 작동한다고 말할 수 있습니다.
3 번째 방정식 ( l2_loss
사용)은 제곱 된 유클리드 노름의 1/2, 즉 입력의 요소 별 제곱의 합인 x를 반환한다고 생각합니다. = 예측 -Y
. 어디에서나 샘플 수로 나누지 않습니다. 따라서 매우 많은 수의 샘플이있는 경우 계산이 오버플로 될 수 있습니다 (Inf 반환).
나머지 두 가지는 공식적으로 동일하며 요소 별 제곱 x
텐서의 평균을 계산합니다. 그러나 문서에 명시 적으로 지정되어 있지는 않지만 reduce_mean
은 매우 많은 수의 샘플로 인한 오버플로를 방지하도록 조정 된 알고리즘을 사용할 가능성이 높습니다. 즉, 모든 것을 먼저 합하고 그런 다음 N으로 나누려고하지 않지만, 반드시 오버플로를 일으키지 않고 임의의 수의 샘플에 적응할 수있는 일종의 롤링 평균을 사용합니다.
참조 페이지 https://stackoverflow.com/questions/41338509
반응형
'파이썬' 카테고리의 다른 글
파이썬 문자열을 사용하여 Python에서 함수 호출 (0) | 2020.10.25 |
---|---|
파이썬 PIL을 설치하려고 할 때 오류 발생 (0) | 2020.10.25 |
파이썬 Ctrl-C 즉, KeyboardInterrupt를 사용하여 Python에서 스레드 종료 (0) | 2020.10.24 |
파이썬 Convert string to Enum in Python (0) | 2020.10.24 |
파이썬 How to create JSON object in Python (0) | 2020.10.24 |
댓글