2017-01-12 8 views
2

Ich arbeite mit einem Autoencoder. Mein Tensorflow-Diagramm sieht ungefähr so ​​aus: (Eingabebild) --conv2d -> (komprimierte Darstellung) --deconv2d -> (rekonstruiertes Bild).Wie erhält man einen Farbverlauf eines Platzhalters mit Standard in TensorFlow?

Ich habe den komprimierten Darstellungstensor in placeholder_with_default geändert, damit ich jeden gewünschten Wert einstecken und sehen kann, was rekonstruiert wurde. Der Standardwert, der verwendet werden soll, wenn komprimierte Darstellung nicht gespeist wird, ist das Ergebnis von conv2d.

Allerdings wirft der Optimiser, dass:

LookupError: gradient registry has no entry for: PlaceholderWithDefault 

Wie kann ich die Kurve wissen lassen, nur um die üblichen Gradienten in der Optimierungsphase verwenden? Wenn komprimierte Darstellung kein Platzhalter ist, funktioniert alles einwandfrei.

+0

Wenn Sie einen Teil Ihres Netzwerks durch einen Platzhalter ersetzt haben, warum verwenden Sie den Optimierer? Ich würde annehmen, dass dein Netzwerk bereits trainiert ist. –

+0

Ich bereitete das Diagramm vor und dachte, dass es in der Lage sein muss, sowohl für die Optimierung als auch für die Erforschung von Repräsentationen zu arbeiten. Wie können Sie die Struktur des Diagramms ändern, nachdem es trainiert wurde? Kann ich leicht zwischen Platzhalter und Computerteil wechseln, um zwischen Training und Exploration zu wechseln? – iramusa

+0

Sie möchten vielleicht Ihren Speicher, die Darstellung und den Decoder separat speichern. Oder Sie könnten versuchen, ein separates Decoder-Netzwerk aufzubauen und die 'get_variable()' Funktion zu verwenden, um Ihre trainierten Variablen wiederzuverwenden. –

Antwort

0

Sie müssen keinen Platzhalter zum Eingeben von Daten verwenden - in session.run() kann jeder Tensor das Ziel des feed_dict-Arguments sein. Daher sollten Sie die komprimierte Darstellung als Tensor beibehalten und sie nur dem zuweisen, was Sie wollen, wenn Sie im Argument feed_dict eigene Daten bereitstellen möchten.

Verwandte Themen