2016-11-18 4 views

Antwort

7

Sie haben einen Graph Betrieb zu verwenden:

a = tf.placeholder(tf.float32, shape=(None, 3072)) 
b = tf.shape(a)[0] 

kehrt

<tf.Tensor 'strided_slice:0' shape=() dtype=int32> 

während b = a.get_shape()[0] gibt

zurück
Dimension(None) 
-2

Ihre aktuelle Art und Weise bereits funktioniert. Ich versuchte es mit dem folgenden Code und es funktioniert gut:

x = [[1,2,3],[4,5,6], [7,8,9]] 
x = tf.constant(x) 
size = x.get_shape()[0] 
x /= size 

with googlelog.Capture(): 
    p_op = tf.Print(x, [x], "output: ", summarize=10) 
    sess.run(p_op) 

Mit Ausgabe:

output: [0 0 1 1 1 2 2 2 3] 
+1

ist es nicht mein Fall, weil Ihr x vordefinierte Dimensionsgröße hat. Und es ist auch eine Liste, kein Tensor –

+0

Oh, ich habe vergessen zu kopieren und einzufügen, aber ich hatte die Zeile x = tf.constant (x) direkt nach der Instantiierung, so dass es für Tensor funktioniert. Aber können Sie in Bezug auf Ihr Platzhalterproblem näher erläutern, welches Problem Sie haben? Ich hätte erwartet, dass die Form zur Laufzeit erzeugt wird, also sollte oben funktioniert haben. –

+1

Oh ich denke ich weiß was du schlägst. Verwenden Sie tf.shape (x) [0] (das den Wert zur Laufzeit erhält) anstelle von x.get_shape() [0] (was zur Zeit des Diagramms ist) –

Verwandte Themen