새소식

short terms

NaN

  • -

- Not a Number라는 뜻으로, Python의 notation 중 하나이다.

- 이게 보이면 원인을 찾아서 해결하는 것이 좋다.

- 보통 Infinity value로 인해 생겨난다.

- NaN과 연관된 연산은 죄다 NaN이 되므로 골치아프다.

 

 

  • zero devide by zero (0/0)
  • Infinity devide by Infinity (Inf/Inf)
  • Inf-Inf, -Inf-Inf, -Inf+Inf  (Inf+Inf = Inf)
  • zero multiplied by Infinity, Infinity multiplied by zero (0*Inf, Inf*0)
  • x<0, sqrt(x)
  • x=Inf or y=0, fmod is floating-point remainder, fmod(x,y)

0 * something, 0/0은 수학적으로는 0이지만,

Python에서는 NaN이라고 한다...

 

- Pytorch에서 NaN 또는 Inf를 체크하는 방법은 다음과 같다.

assert not torch.isnan(x).any()
assert not torch.isinf(x).any()

- x라는 Tensor의 element 중, 하나라도 isnan/isinf를 만족하는 경우 true가 되므로, assert로 잡아내기 위해 not을 표시한다.

- torch에서 autograd(backward) 과정에서 detecting anomaly로 사용된다.

 

 

- 또한 NaN과 NaN은 다르다. (x=np.nan, x!=x  는 True를 반환)

 

 

'short terms' 카테고리의 다른 글

Kimball’s Dimensional Modeling  (0) 2023.07.18
Language Code, ISO 639, FLORES-200  (0) 2022.11.25
[draft] Streaming VS Time series  (0) 2021.05.17
Dialect (JPA hibernate)  (0) 2021.05.07
Eviction, Passivation, Expiration  (0) 2021.05.07
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.