Ich habe eine Variable a
der Dimension (1, 5), die ich so oft wie die Größe meiner Mini-Charge "Kacheln" möchte. Zum Beispiel, wenn die Minibatchgröße 32 ist, dann möchte ich einen Tensor c
der Dimension (32, 5) konstruieren, wobei jede Zeile dieselben Werte wie die ursprüngliche (1, 5) Variable a
hat.Tensorflow Form eines gekachelten Tensors
Aber ich kenne nur die Mini-Losgröße zur Laufzeit: Es ist die Größe der Dimension 0 von Platzhalter b
: tf.shape(b)[0]
Hier ist mein Code c zu konstruieren:
a = tf.Variable(np.random.uniform(size=(1,5)))
b = tf.placeholder(shape=[None, 12], dtype=tf.float32)
batch_size = tf.shape(b)[0]
c = tf.tile(a, tf.pack([batch_size, 1]))
Das läuft gut . Jedoch gibt c.get_shape()
zurück (?,?). Ich verstehe nicht, warum das nicht zurückkehrt (?, 5).
Das verursacht ein Problem später in meinem Code, wenn ich eine Matrixvariable W
mit der Anzahl der Spalten konstruiere, von denen ich erwarte, 5 anstelle von?.
Jede Hilfe wäre willkommen. Vielen Dank.
Welche Version? Ein ähnliches Problem wurde in 0.10rc behandelt. Sie können set_shape auch als Workaround verwenden –
Danke, set_shape erledigt den Job. . Ist Version 0.8.0rc0. –