Recentemente ho implementato un modello e quando ho eseguito Ho ricevuto questo avvertimento:Spiegazione del gradiente denso di Tensorflow?
UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape.
This may consume a large amount of memory.
"Converting sparse IndexedSlices to a dense Tensor of unknown shape. "
Con alcune impostazioni dei parametri simili (dimensionalità Embedding) improvvisamente il modello è incredibilmente lento.
- Che cosa implica questo avviso? Sembra che qualcosa che ho fatto ha causato tutti i gradienti di essere denso e così backprop sta facendo matrice densa calcoli
- Se è che ci sia un problema con il modello che sta causando questo, come posso identificare e risolvere il problema ?
Grazie per i chiarimenti. Come posso identificare quale op sta causando questo? – Taaam
Il modo più semplice è di guardare attraverso il tuo codice per 'tf.gather()' o 'tf.nn.invocazioni di embedding_lookup(), trova il tensore 't' che è l'argomento' params' (primo) su uno di questi op e stampa 't.op'. Generalmente, otterrai le migliori prestazioni se 't' è un' tf.Variable', ma alcune operazioni come 'tf.concat()' hanno specializzazioni che rendono i gradienti efficienti. – mrry
Sembra che sia un 'boolean_mask' alimentato con' reshape'. Questo è usato in un calcolo delle perdite molto nel grafico dopo 'reshape's di mulitple,' pack's, 'tile's,' expand_dim's, 'squeeze's,' batch_matmul's, ecc. C'è un modo per identificare quale op (s) non può accettare gradienti sparsi? – Taaam