2015-12-12 23 views

risposta

16

Il tensorflow tf.Graph classe è una sola accodamento struttura dati , il che significa che è possibile aggiungere i nodi al grafico dopo l'esecuzione parte del grafico, ma non è possibile rimuovere o modificare i nodi esistenti. Poiché TensorFlow esegue solo il sottografo necessario quando si chiama Session.run(), non vi sono costi di esecuzione per avere nodi ridondanti nel grafico (sebbene continueranno a consumare memoria).

Per rimuovere tutti nodi nel grafico, è possibile creare una sessione con un nuovo grafico:

with tf.Graph().as_default(): # Create a new graph, and make it the default. 
    with tf.Session() as sess: # `sess` will use the new, currently empty, graph. 
    # Build graph and execute nodes in here. 
+3

"anche se continueranno a consumare memoria" - questa memoria è stata rilasciata quando la sessione è spazzatura raccolta dal runtime python? –

5

Sì, tf.Graph sono costruiti in modo di sola aggiunta come @mrry lo mette.

Ma non c'è soluzione:

Concettualmente è possibile modificare un grafico esistente clonandolo ed effettuare le modifiche necessarie lungo la strada. A partire da r1.1, Tensorflow fornisce un modulo denominato tf.contrib.graph_editor che implementa l'idea di cui sopra come un insieme di funzioni convenienti.

+6

Peccato che la documentazione sia scarsa riguardo a questi metodi –

Problemi correlati