Tensorflow: Wie initialisiere ich den Einbettungs-Layer in der Estimator API?

Erstellt am 12. Jan. 2018  ·  3Kommentare  ·  Quelle: tensorflow/tensorflow

Ich versuche, vorhandene Einbettungen im Tensorflow-Modell zu verwenden, die Größe der Einbettung ist größer als 2 GB und dies macht meinen ursprünglichen Versuch, dies zu tun, erfolglos:

embedding_var = tf.get_variable(
        "embeddings", 
        shape=GLOVE_MATRIX.shape, 
        initializer=tf.constant_initializer(np.array(GLOVE_MATRIX))
)

Was mir diesen Fehler gegeben hat:

Cannot create a tensor proto whose content is larger than 2GB.

Ich verwende AWS SageMaker, das auf der Estimator-API basiert, und die tatsächliche Ausführung des Diagramms in der Sitzung erfolgt im Hintergrund, daher bin ich mir nicht sicher, wie ich einige Platzhalter für die Einbettung initialisieren soll. Wäre hilfreich, wenn jemand in der Lage sein würde, die Art und Weise einer solchen Initialisierung in Bezug auf die EstimatorAPI zu teilen.


Bitte gehen Sie zu Stack Overflow, um Hilfe und Support zu erhalten:

https://stackoverflow.com/questions/tagged/tensorflow

Wenn Sie ein GitHub-Problem öffnen, finden Sie hier unsere Richtlinie:

  1. Es muss sich um einen Bug oder eine Funktionsanfrage handeln.
  2. Das folgende Formular muss ausgefüllt werden.
  3. Es sollte kein TensorBoard-Problem sein. Die gehen hierher .

Deshalb haben wir diese Richtlinie : TensorFlow-Entwickler reagieren auf Probleme. Wir wollen uns auf die Arbeit konzentrieren, die der gesamten Community zugute kommt, zB Fehler beheben und Funktionen hinzufügen. Unterstützung hilft nur Einzelpersonen. GitHub benachrichtigt auch Tausende von Menschen, wenn Probleme eingereicht werden. Wir möchten, dass sie sehen, dass Sie ein interessantes Problem kommunizieren, anstatt zu Stack Overflow weitergeleitet zu werden.


System Information

  • Habe ich benutzerdefinierten Code geschrieben (im Gegensatz zu einem in TensorFlow bereitgestellten Standard-Beispielskript) :
  • Betriebssystemplattform und -verteilung (z. B. Linux Ubuntu 16.04) :
  • TensorFlow installiert von (Quelle oder Binärdatei) :
  • TensorFlow-Version (verwenden Sie den Befehl unten) :
  • Python-Version :
  • Bazel-Version (wenn aus der Quelle kompiliert) :
  • GCC/Compiler-Version (wenn aus der Quelle kompiliert) :
  • CUDA/cuDNN-Version :
  • GPU-Modell und Speicher :
  • Genauer Befehl zum Reproduzieren :

Sie können einige dieser Informationen mithilfe unseres Umgebungserfassungsskripts sammeln:

https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh

Die TensorFlow-Version erhalten Sie mit

python -c "Tensorflow als tf importieren; drucken (tf.GIT_VERSION, tf.VERSION)"

Beschreibe das Problem

Beschreiben Sie das Problem hier klar. Geben Sie hier unbedingt an, warum es sich um einen Fehler in TensorFlow oder eine Funktionsanfrage handelt.

Quellcode / Protokolle

Fügen Sie alle Protokolle oder Quellcodes hinzu, die für die Diagnose des Problems hilfreich wären. Wenn Sie Rückverfolgungen einschließen, fügen Sie bitte die vollständige Rückverfolgung bei. Große Protokolle und Dateien sollten angehängt werden. Versuchen Sie, einen reproduzierbaren Testfall bereitzustellen, der das Nötigste ist, um das Problem zu generieren.

awaiting response bug

Hilfreichster Kommentar

Es sieht so aus, als ob der richtige Weg, Variablen mit Einbettungen zu initialisieren, darin besteht, tf.train.Scaffold zu verwenden. Hier finden Sie weitere Informationen zu Stackoverflow

Alle 3 Kommentare

Ich denke, dies wäre normalerweise ein Problem vom Typ "An StackOverflow senden" (Standardantwort unten angehängt), aber die 2-GB-Grenze scheint im Bereich eines Fehlers oder einer Funktionsanforderung zu liegen.

@martinwicke @ispirmustafa irgendwelche Vorschläge?

Diese Frage wird besser bei StackOverflow gestellt, da es sich nicht um eine Fehler- oder Funktionsanfrage handelt. Es gibt auch eine größere Community, die dort Fragen liest. Vielen Dank!

Ich denke, es hängt mit der Begrenzung der Grafikgröße zusammen. Die Verwendung von constant_initializer bettet die GLOVE_MATRIX in den Graphen ein, wodurch die Graphgröße erhöht wird.
Könnten Sie bitte versuchen, einen nicht konstanten Initialisierer zu verwenden?

Es sieht so aus, als ob der richtige Weg, Variablen mit Einbettungen zu initialisieren, darin besteht, tf.train.Scaffold zu verwenden. Hier finden Sie weitere Informationen zu Stackoverflow

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen