TensorFlow: Erzeugung eines random-Konstante
In ipython ich importiert tensorflow as tf
und numpy as np
und erstellt eine TensorFlow InteractiveSession
.
Wenn ich laufen, oder während der Initialisierung einige normale Verteilung mit numpy-Eingang, läuft alles einwandfrei:
some_test = tf.constant(np.random.normal(loc=0.0, scale=1.0, size=(2, 2)))
session.run(some_test)
Gibt:
array([[-0.04152317, 0.19786302],
[-0.68232622, -0.23439092]])
Einfach wie erwartet.
...aber wenn ich den Tensorflow normal-Verteilung-Funktion:
some_test = tf.constant(tf.random_normal([2, 2], mean=0.0, stddev=1.0, dtype=tf.float32))
session.run(some_test)
...es einen typfehler zu sagen:
(...)
TypeError: List of Tensors when single Tensor expected
Was vermisse ich hier?
Die Ausgabe von:
sess.run(tf.random_normal([2, 2], mean=0.0, stddev=1.0, dtype=tf.float32))
allein gibt die genau die gleiche Sache, die np.random.normal
erzeugt -> eine matrix der Form (2, 2)
mit Werten aus einer Normalverteilung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
tf.Konstante()
op dauert ein numpy-array (oder etwas implizit umwandelbar in ein numpy-array) und liefert einetf.Tensor
, deren Wert der gleiche wie array. Es tut nicht akzeptierentf.Tensor
als argument.Auf der anderen Seite, die
tf.random_normal()
op gibt einetf.Tensor
deren Wert zufällig generiert entsprechend der gegebenen Verteilung jedes mal, wenn es läuft. Da gibt es einetf.Tensor
es kann nicht als argument fürtf.constant()
. Dies erklärt dieTypeError
(die nicht in Zusammenhang mit der Verwendung vontf.InteractiveSession
, da es tritt auf, wenn Sie bauen Diagramm).Ich nehme an, Sie wollen Ihr Diagramm um einen tensor, (i) ist zufällig generiert auf seiner ersten Verwendung, und (ii) danach konstant. Es gibt zwei Möglichkeiten, dies zu tun:
NumPy verwenden Sie zum generieren der Zufallszahl und steckte es in einen
tf.constant()
, wie Sie es in Ihrer Frage:(Potenziell schneller, als es kann, die die GPU nutzen Sie zum generieren der Zufallszahlen) Verwenden TensorFlow zum generieren der Zufallszahl und steckte es in einen
tf.Variable
:tf.Variable
wenn ich will, dass die GPU-Beschleunigung " aka "Reine" tensorflow für immer ein random "Konstante"?!some_test
danach konstant würde ich das gleiche tun wie option 2, aber nichtsess.run(some_test.initializer)
?