MuZero-paperipseudokoodissa heillä on seuraava koodirivi:

hidden_state = tf.scale_gradient(hidden_state, 0.5) 

Mitä tämä tekee? Miksi se on siellä?

Olen etsinyt kohdetta tf.scale_gradient, eikä sitä ole tensorflowssa. Ja toisin kuin scalar_loss, he eivät näytä määrittäneen sitä omassa koodissaan.

Tässä yhteydessä koko funktio:

def update_weights(optimizer: tf.train.Optimizer, network: Network, batch, weight_decay: float): loss = 0 for image, actions, targets in batch: # Initial step, from the real observation. value, reward, policy_logits, hidden_state = network.initial_inference( image) predictions = [(1.0, value, reward, policy_logits)] # Recurrent steps, from action and previous hidden state. for action in actions: value, reward, policy_logits, hidden_state = network.recurrent_inference( hidden_state, action) predictions.append((1.0 / len(actions), value, reward, policy_logits)) # THIS LINE HERE hidden_state = tf.scale_gradient(hidden_state, 0.5) for prediction, target in zip(predictions, targets): gradient_scale, value, reward, policy_logits = prediction target_value, target_reward, target_policy = target l = ( scalar_loss(value, target_value) + scalar_loss(reward, target_reward) + tf.nn.softmax_cross_entropy_with_logits( logits=policy_logits, labels=target_policy)) # AND AGAIN HERE loss += tf.scale_gradient(l, gradient_scale) for weights in network.get_weights(): loss += weight_decay * tf.nn.l2_loss(weights) optimizer.minimize(loss) 

Mitä kaltevuuden skaalaus tekee ja miksi he tekevät sen siellä?

kommentit

  • Olen etsinyt hakua tf.scale_gradient() TensorFlow ' -sivustolta. Kuten tulokset osoittavat , mikään ei tule ulos. Sen on oltava vanhojen TF-versioiden funktio, joka on nyt hylätty. Varmasti, se ' ei ole enää saatavana TF 2.0: ssa.
  • En usko sitä

' id = ”5e337247eb”>

ne ovat koskaan olleet tensorflow-funktioita, koska Google-haulla ei ole tuloksia.

Vastaa

Tämän artikkelin kirjoittaja – Kaipasin, että tämä ei ilmeisesti ole TensorFlow-funktio, se vastaa Sonetin ” scale_gradient tai seuraava toiminto:

 def scale_gradient(tensor, scale): """Scales the gradient for the backward pass.""" return tensor * scale + tf.stop_gradient(tensor) * (1 - scale)  

Kommentit

Vastaa

Koska sen salakoodi? (koska se ei ole TF 2.0: ssa) menisin kaltevuusleikkauksella tai erä normalisoimalla ( ”aktivointitoimintojen skaalaus”)

kommentit

  • Antamastasi linkistä näyttää siltä, että tämä todennäköisesti olisi gradientin normin skaalaus, mikä tarkoittaa clipnorm -parametrin asettaminen optimoijaan. Koodissa he käyttävät kuitenkin gradientin skaalausta koodissa kaksi kertaa eri arvoilla joka kerta. clipnorm -parametri ei salli minun tehdä tätä. Tiedätkö miten voisin?
  • Mallin piilotettu tila ei myöskään näytä olevan jotain, joka pitäisi leikata. (En ymmärrä ', miksi sen leikkaaminen olisi hyödyllistä.) Minulle olisi erittäin hyödyllistä selittää, mitä kaltevuusleikkaus siellä tekisi.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *