2016-07-20 19 views
0

Ich frage mich, ob es eine einfache Möglichkeit gibt, die Größe/Speicher eines Tensorflow-Diagramms vor dem Ausführen einer Tensorflow-Sitzung zu überprüfen.Tensorflow Grafikgröße

Ich suche nach etwas, wo ich meine Systemparameter ändern kann, die das Diagramm definieren, und kann sehen, wie groß (im Speicher) das Diagramm entsprechend wird.

+0

Willkommen bei Stack-Überlauf! Willkommen bei Stack Overflow! Ich habe deine Frage soweit bearbeitet, wie ich dein Problem erraten konnte. Fügen Sie jedoch Code und Beschreibung hinzu, damit mehr Personen mit Wissen über das Thema sie sehen können. Bitte editieren Sie in der spezifischen Fehlermeldung, die Sie antreffen, falls es notwendig ist, das spezifische Problem zu identifizieren. Viel Glück! – manetsus

Antwort

0

Ich habe etwas ähnliches getan, wo ich die Anzahl der Parameter in meinem Modell sehen wollte.

vars = 0 
for v in tf.all_variables(): 
    vars += np.prod(v.get_shape().as_list()) 
print(vars) 

Jetzt enthält Vars die Summe des Produkts der Dimensionen aller Variablen in Ihrem Diagramm. Wenn jede Variable vom Typ tf.float32 ist, können Sie vars mit 4 multiplizieren, um die Anzahl der Bytes zu erhalten, die von allen Variablen verbraucht werden. Dies ist jedoch nur eine Untergrenze und es wird ein zusätzlicher Aufwand entstehen. Außerdem denke ich, dass die Berechnung der Gradienten viel Speicher erfordert, da die Aktivierungen an jedem Punkt im Modell für den Rückwärtsdurchlauf gespeichert werden müssen.

+1

tf.all_variables() ist jetzt tf.global_variables() –

0

Bei Tensor t:

var_sizes = [np.product(list(map(int, v.get_shape())))*v.dtype.size 
      for key in t.graph.get_all_collection_keys() for v in f.graph.get_collection_ref(key)] 
print(sum(var_sizes)/(1024**2), 'MB')