Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 27. 08. 2022 15:22 — Editoval lordcong (27. 08. 2022 15:23)

lordcong
Příspěvky: 33
Škola: PF UK
Pozice: student
Reputace:   
 

Zbavení se zero gradient u funkce

Jak upravit tuto funkci MyFunc, aby dávala (přibližně) stejný výsledek, ale derivace nebyla nulová? Předpokládám, že to nějak souvisí s Diracovou distribucí, ale nevím, jak ji do toho algoritmu dostat.

Code:

from jax import grad
import numpy as np
import jax.nn as nn

def MyFunc(coefs):
   a = coefs[0]
   b = coefs[1]
   c = coefs[2]
   
   if a > b:
      return 30.0
   elif b > c:
      return 20.0
   else:
      return 10.0   
   
myFuncDeriv = grad (MyFunc)   

# Zde to ve všech případech vytiskne zero gradient [0. 0. 0.]
print (myFuncDeriv(np.random.sample(3)))

Zero gradient nedostanu třeba v tomto případě - ale výsledek je příliš vzdálený 30.0 / 20.0 / 10.0

Code:

def MyFunc(coefs):
   a = coefs[0]
   b = coefs[1]
   c = coefs[2]
   
   if a > b:
      return nn.sigmoid(a) * 30.0
   elif b > c:
      return nn.sigmoid(b) * 20.0
   else:
      return nn.sigmoid(c) * 10.0

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson