Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

tf.mixed_precision.experimental.LossScale

Visualizza sorgente su GitHub

Classe di base per tutte le scale di perdita.

Questa è una classe base astratta, quindi non è possibile creare un'istanza direttamente. Invece, utilizzare una delle sue sottoclassi concrete:

Si consiglia di utilizzare una scala di perdita con un tf.keras.mixed_precision.experimental.LossScaleOptimizer , come la sua più facile che usare direttamente una scala di perdita.

scalatura perdita è un processo che moltiplica la perdita da un moltiplicatore chiamato scala perdita, e divide ogni sfumatura dello stesso moltiplicatore. Il pseudocodice per questo processo è il seguente:

 loss = ...
loss *= loss_scale
grads = gradients(loss, vars)
grads /= loss_scale
 

Matematicamente, il ridimensionamento perdita non ha alcun effetto, ma può contribuire a evitare underflow numerica nelle sfumature intermedie quando float16 tensori sono utilizzati per la formazione di precisione misto. Applicando alla perdita, ogni sfumatura intermedia avrà lo stesso moltiplicatore applicato.

Le istanze di questa classe rappresentano una scala di perdita. Chiamando istanze di questa classe restituisce la scala di perdita come un tensore float32 scalare, mentre il metodo update() aggiorna la scala perdite a seconda dei valori delle pendenze. Ottimizzatori utilizzano le istanze di questa classe per la perdita di scala e di sfumature.

Nella maggior parte delle funzioni che accettano un LossScale, è anche possibile passare un int (come ad esempio

8) per creare un FixedLossScale o la stringa "dynamic" per creare una scala di perdita di dinamica.

metodi

from_config

Vedi la fonte

Crea il LossScale dalla sua configurazione.

get_config

Vedi la fonte

Restituisce la configurazione di questa scala perdita.

update

Vedi la fonte

Aggiorna il valore della scala di perdita.

La scala di perdita sarà potenzialmente aggiornato, in base al valore dei grads . Il tensore restituito dalla chiamata questa classe viene aggiornata solo quando viene valutata questa funzione.

In modo ansioso, verrà aggiornato direttamente la scala perdita, in modo che la chiamata __call__ tornerà la scala perdita recentemente aggiornato. In modalità grafico, questo restituisce un op che, quando ha valutato, aggiorna la scala perdita.

Questa funzione restituisce anche uno should_apply_gradients bool. Se False, pendenze non dovrebbero essere applicate alle variabili che passo, come i gradienti non finiti sono stati trovati, e la scala di perdita è stato aggiornato per ridurre la possibilità di trovare gradienti non finiti nella fase successiva. Alcune classi di scala perdita restituirà sempre vero, in quanto non si possono regolare in risposta ai gradienti non finiti.

Quando viene utilizzato un DistributionStrategy, tale funzione può essere chiamato solo in un contesto cross-replica.

args
grads Una struttura annidata di gradienti non scalati, ciascuno che è il gradiente della perdita rispetto ad un peso. I gradienti dovrebbero essere già stati divisi per lo scala perdita sia prima passato a questa funzione. gradienti 'none' sono accettate, e vengono ignorate.

ritorna
update_op In modalità ansioso, None. In modalità grafico, un op per modificare la scala perdita.
should_apply_gradients O un bool o un tensore booleano scalare. Se False, il chiamante deve passare l'applicazione grads alle variabili questo passo.

__call__

Vedi la fonte

Restituisce la scala di perdita di corrente come scalare float32 tensore.