2017-02-07 3 views
1

Ich verwende Inception v1 Architektur für das Transferlernen. Ich habe die Checkpoints Datei, Netze, Pre-Processing-Datei aus der unter Github-Repository für jedes meiner BildWarum wirft meine Implementierung von Transfer Learning auf Tensorflow nach ein paar Iterationen einen Fehler?

https://github.com/tensorflow/models/tree/master/slim

Ich habe 3700 Bilder und bündeln Sie das letzte Pooling Schichtfiltern aus dem Diagramm downloded und Anhänge es zu einer Liste. Mit jeder Iteration erhöht sich die RAM-Auslastung und schließlich wird der Lauf bei etwa 2000 Bildern beendet. Kannst du mir sagen, welchen Fehler ich begangen habe?

https://github.com/Prakashvanapalli/TensorFlow/blob/master/Transfer_Learning/inception_v1_finallayer.py

Auch wenn ich die Liste Anfügen entfernen und nur versuchen, die Ergebnisse zu drucken. Das passiert immer noch. Ich schätze, der Fehler liegt in der Art, wie der Graph aufgerufen wird. Wenn ich meine RAM-Auslastung sehe, wird es mit jeder Iteration schwer und ich weiß nicht, warum das passiert, da ich nichts spare, und es gibt keinen Unterschied zwischen der ersten Wiederholung

Von meinem Punkt aus sende ich nur ein Bild und die Ausgänge erhalten und speichern. Es sollte also unabhängig davon funktionieren, wie viele Bilder ich sende.

Ich habe es sowohl auf GPU (6 GB) und CPU (32 GB) versucht.

Antwort

2

Sie scheinen Bilder in Ihrem Diagramm als tf.constant s zu speichern. Diese sind dauerhaft und verursachen Speicherprobleme, wie Sie sie haben. Stattdessen würde ich entweder placeholders oder queues empfehlen. Warteschlangen sind sehr flexibel und können sehr leistungsfähig sein, können aber auch ziemlich kompliziert werden. Vielleicht möchten Sie nur mit einem Platzhalter beginnen.

Für ein komplexes Beispiel einer Bildeingabe-Pipeline können Sie sich die Inception model ansehen.

+0

Das Bild, das ich an Inception.Preprocessing-Funktion senden muss ein Tensor sein, wenn ich einen Platzhalter und Feed-Bilder an das Netzwerk, sess.run würde es in eine numpy Array konvertieren, die von Preprocessing-Funktion abgelehnt werden . Wie erstelle ich einen Tensor aus meinem NP-Array, ohne die Konstante wie oben erwähnt zu verwenden? –

+0

Danke, es hat funktioniert. –

Verwandte Themen