Numpy: λ³΅μž‘ν•œ μž…λ ₯μ΄μžˆλŠ” np.clip은 ν…ŒμŠ€νŠΈλ˜μ§€ μ•Šμ•˜μœΌλ©° μ΄μƒν•œ λ™μž‘μ΄ μžˆμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 02μ›” 23일  Β·  8μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

이것은 https://github.com/pytorch/pytorch/issues/33568 μ—μ„œ λ‚˜μ™”μŠ΅λ‹ˆλ‹€

>>> np.clip([3 + 4.j], -1, 2)                                                                                       
array([2.+0.j])
>>> np.clip([3 + 4.j], -1+1.j, 2+12.j)  # imaginary component goes up                                                                   
array([2.+12.j])
>>> np.clip([1 + 4.j], -1+1.j, 2+12.j)  # imaginary component doesn't go up                                                                             
array([1.+4.j])

λ³΅μž‘ν•œ μž…λ ₯에 λŒ€ν•œ μœ μΌν•œ ν…ŒμŠ€νŠΈλŠ” μ„Έκ·Έ ν΄νŠΈκ°€ μ•„λ‹ˆλΌλŠ” κ²ƒμž…λ‹ˆλ‹€.

합리적인 행동은 λ‹€μŒ 쀑 ν•˜λ‚˜ 일 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ‹€μˆ˜ λΆ€λΆ„κ³Ό ν—ˆμˆ˜ 뢀뢄을 λ”°λ‘œ 잘라 λ‚΄κΈ°
  • μœ„μƒμ„ λ³€κ²½ν•˜μ§€ μ•ŠλŠ” 클립 μ ˆλŒ€ κ°’
    λ‹€λ₯Έ μ˜΅μ…˜μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œν™”λ˜μ–΄μžˆλŠ” ν•œ μ–΄λ–€ μ„ νƒμ„ν•˜λŠ”μ§€κ°€ μ€‘μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 맀우 μ€‘μš”ν•œ 문제라고 μƒκ°ν•˜μ§€ μ•Šμ§€λ§Œ 적어도 μ›ν•˜λŠ” λ™μž‘μ„ 여기에 λ¬Έμ„œν™”ν•˜λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.

00 - Bug numpy.core

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@mruberry , λ‚˜λŠ” λ™μ˜ν–ˆλ‹€. μ–΄μ¨Œλ“  λ‚˜λŠ” λˆ„κ΅°κ°€κ°€ 이것에 λŒ€ν•œ 유슀 μΌ€μ΄μŠ€μ‘°μ°¨ 가지고 μžˆλŠ”μ§€μ‘°μ°¨ ν™•μ‹ ν•˜μ§€ λͺ»ν•œλ‹€. μ’€ 덜 λ‚˜μ˜κ²Œ λ§Œλ“€κΈ°μœ„ν•œ ν•œ 가지 μ£Όμž₯으둜, min.real <= max.real κ³Ό min.imag <= max.imag 만 min <= max κ³ΌλŠ” λŒ€μ‘°μ μœΌλ‘œ ν™•μΈν•˜λ©΄ λͺ¨λ“  것이 μ •μƒμž…λ‹ˆλ‹€ (ν˜„μž¬ μ‹€μ œλ‘œλŠ” 그렇지 μ•Šμ§€λ§Œ NumPyμ—μ„œ ν™•μΈν•˜μ‹­μ‹œμ˜€).

λͺ¨λ“  8 λŒ“κΈ€

ν˜„μž¬ λ™μž‘μ€ x = sorted(x) λŒ€ν•΄ x = [min, clip(arr, min, max), max] x = sorted(x) λ₯Ό λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.

λΆ„λͺ…ν•˜μ§€ μ•Šμ€ 행동 선택을 μœ„ν•΄ μ—¬κΈ°μ—μ„œ μ΅œμ†Œ, μ΅œλŒ€, μ •λ ¬κ³Ό 일관성을 κΉ¨λŠ” 것이 κ°€μΉ˜κ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ ν•  수 μ—†λ‹€λŠ” 것이 μ•„λ‹ˆλΌ μ΅œμ†Œ / μ΅œλŒ€ 및 μ •λ ¬ λ™μž‘μ— λŒ€ν•΄μ„œλ„ λ…Όμ˜ν•΄μ•Όν•©λ‹ˆλ‹€.
그리고 그것이 absmin , absmax 및 abssort 이 μ˜λ―Έκ°€ 있고 기본적으둜 클리핑에 μ‚¬μš©ν•œλ‹€κ³  λ§ν•˜λ©΄.
λΉ„ μ‹€μ œ μž…λ ₯에 λŒ€ν•΄ 였λ₯˜λ₯Ό μ œκ³΅ν•˜λŠ” κ²ƒμœΌλ‘œ 더 μ‰½κ²Œ ν™•μ‹  ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

νŽΈμ§‘ : 틀림없이 ꡬ성 μš”μ†Œ 클리핑은 μ‹€μ œλ‘œ 더 μ—„κ²©ν•˜κΈ° λ•Œλ¬Έμ— Erics λ™μž‘μ„ ν—ˆμš©ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 참고둜 μœ μš©ν•˜λ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€λ₯Έ μ§ˆλ¬Έμ€ 이것에 λŒ€ν•œ μ‹€μ œ μ‚¬μš© 사둀 κ°€ μžˆμŠ΅λ‹ˆκΉŒ? λ‹€λ₯Έ μ½”λ“œλ‘œ 더 λͺ…ν™•ν•˜μ§€ μ•Šμ€ 것?

μ‹€μˆ˜ λΆ€λΆ„κ³Ό ν—ˆμˆ˜ 뢀뢄을 λ”°λ‘œ 잘라 λ‚΄κΈ°

그것이 λ‚˜μ˜ 첫 번째 선택이 될 κ²ƒμž…λ‹ˆλ‹€.

μœ„μƒμ„ λ³€κ²½ν•˜μ§€ μ•ŠλŠ” 클립 μ ˆλŒ€ κ°’

유용 ν•  수 μžˆμ§€λ§Œ κ°„λ‹¨ν•œ 클립보닀 κ΅¬ν˜„ν•˜κΈ°κ°€ 더 λ³΅μž‘ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ μ§ˆλ¬Έμ€ : 이것에 λŒ€ν•œ μ‹€μ œ _usecase_κ°€ μžˆμŠ΅λ‹ˆκΉŒ? λ‹€λ₯Έ μ½”λ“œλ‘œ 더 λͺ…ν™•ν•˜μ§€ μ•Šμ€ 것?

그건 쒋은 μ§ˆλ¬Έμ΄μ•Ό. 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ‚΄κ°€ μ•„λŠ” 것은 그것이 λͺ…λ°±νžˆ λΆ€μ •ν™•ν•΄μ„œλŠ” μ•ˆλœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ‹€μ œμ™€ κ°€μƒμ˜ 뢀뢄을 λ”°λ‘œ μž˜λΌλ‚΄λŠ” 것이 κ±±μ •μž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μ •λ ¬ 된 λ°°μ—΄μ΄μžˆλŠ” 경우 클리핑은 일반적으둜 배열이 [min_value, unchanged, max_value]의 μ„Έ μ˜μ—­μ„ 갖도둝 λ³€κ²½ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ³΅μž‘ν•œ λ°°μ—΄μ˜ μ‹€μˆ˜ λΆ€λΆ„κ³Ό ν—ˆμˆ˜ 뢀뢄을 κ°œλ³„μ μœΌλ‘œ 잘라 λ‚΄λ©΄ 더 이상 μ΄λŸ¬ν•œ 뢄리 κ°€λŠ₯ν•œ μ˜μ—­μ΄ μ—†κ²Œλ©λ‹ˆλ‹€. λŒ€μ‹  μ΅œμ†Œκ°’λ³΄λ‹€ μž‘κ±°λ‚˜ μ΅œλŒ€ 값보닀 크지 μ•Šλ”λΌλ„ 값이 λ³€κ²½ 될 수 μžˆμŠ΅λ‹ˆλ‹€!

λ³΅μ†Œμˆ˜λ₯Ό 자λ₯΄λŠ” 것이 μ •ν™•νžˆ λ¬΄μ—‡μ„ν•΄μ•Όν•˜λŠ”μ§€μ— λŒ€ν•œ ν™•μ‹ μ΄μžˆμ„ λ•ŒκΉŒμ§€ λ™μž‘μ„ λΉ„ν™œμ„±ν™”ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. λ‚΄ μ œμ•ˆμ€ c <min_value이면 min_value둜 μ„€μ •λ˜κ³  c> max_value이면 max_value둜 μ„€μ •λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

@mruberry , λ‚˜λŠ” λ™μ˜ν–ˆλ‹€. μ–΄μ¨Œλ“  λ‚˜λŠ” λˆ„κ΅°κ°€κ°€ 이것에 λŒ€ν•œ 유슀 μΌ€μ΄μŠ€μ‘°μ°¨ 가지고 μžˆλŠ”μ§€μ‘°μ°¨ ν™•μ‹ ν•˜μ§€ λͺ»ν•œλ‹€. μ’€ 덜 λ‚˜μ˜κ²Œ λ§Œλ“€κΈ°μœ„ν•œ ν•œ 가지 μ£Όμž₯으둜, min.real <= max.real κ³Ό min.imag <= max.imag 만 min <= max κ³ΌλŠ” λŒ€μ‘°μ μœΌλ‘œ ν™•μΈν•˜λ©΄ λͺ¨λ“  것이 μ •μƒμž…λ‹ˆλ‹€ (ν˜„μž¬ μ‹€μ œλ‘œλŠ” 그렇지 μ•Šμ§€λ§Œ NumPyμ—μ„œ ν™•μΈν•˜μ‹­μ‹œμ˜€).

λ‚˜λŠ” 당신과도 λ™μ˜ν•©λ‹ˆλ‹€ @seberg ;).

μ§€κΈˆμ€ PyTorchμ—μ„œ 클리핑 (ν΄λž¨ν•‘μ΄λΌκ³  뢀름) λ³΅μž‘ν•œ μž…λ ₯을 λΉ„ν™œμ„±ν™” ν•  것이라고 μƒκ°ν•©λ‹ˆλ‹€. μ–΄μ¨Œλ“  우리의 행동은 NumPy와 μΌμΉ˜ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

이 문제λ₯Ό μ½λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ numpy의 사전 비ꡐλ₯Ό κ³ λ €ν•  λ•Œμ΄ λ™μž‘μ΄ μ‹€μ œλ‘œ μ˜λ―Έκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 사전 식 비ꡐλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 경우 clip, max 및 min도 λ”°λΌμ•Όν•©λ‹ˆλ‹€. λ‚˜λŠ” 이것이 여기에 도달 ν•œ ν•©μ˜λΌκ³  κ°€μ •ν•˜κ³  μžˆμ§€λ§Œ 의견과 μ—°κ²°λœ PRμ—μ„œ ν™•μ‹ ν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰