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
' 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
- Paljon kiitoksia vastauksesta! Jos olisit valmis tarkastelemaan stackoverflow.com/q/60234530 (toinen MuZero-kysymys), kiitän sitä suuresti.
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.
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.