Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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