2017-10-24 1 views
0

docArray ein Platzhalter verwendet, um die tensorflow Graphen aufzubauen. Das Diagramm wird ordnungsgemäß erstellt, aber wenn die Daten mit feed_dict in Sitzung eingegeben werden, wird die variable Länge nicht dynamisch angepasst. Im Folgenden ist das Code-Snippet.Iterate über einen Tensor fließen Platzhalter

lContext = tf.zeros((100,1), dtype=tf.float64) 
rContext = tf.zeros((100,1), dtype=tf.float64) 
for i in range(1, docArray.shape[1].valu): 
    j = docArrayShape - 1 - i 
    lContext = tf.concat([lContext,somefun1()], 1) 
    rContext = tf.concat([somefun2(), rContext], 1)  
X = tf.concat([lContext, docArray, rContext], axis= 0) 

Wenn dieser Code als Vorwärtsdurchlauf verwendet wird, Fehler aufkommt, wenn docArray als initialisiert docArray = tf.placeholder (tf.float64, [100, None])

Bei initialisieren i zufällig Das DocArray mit zufälliger Form, während die Echtzeit docArray Daten der Form (100 x N), wo N ist die Anzahl der Wörter in einem Dokument, bekomme ich Fehler beim Training beim Verketten, wie der lContext und docArray in einer anderen Form sein wird.

Die Größe des Beispieldokuments ist nicht festgelegt.

Vielen Dank im Voraus, für die Hilfe.

Antwort

0

Da Sie nicht erwähnt haben, was die Größe der Variablen während der Verkettungszeit ist, ist es schwierig zu schätzen, wo es falsch läuft. Aber im allgemeinen sollten die Tensoren, die einer Verkettung unterzogen werden, dieselbe Verkettung haben und dieselben Abmessungen in allen Achsen außer der Achse haben, die verkettet wird.

Zum Beispiel

Nicht erlaubt: (verschiedene dtype)

x = tf.placeholder(tf.float32, (100, None)) 
y = tf.placeholder(tf.float64, (100, None)) 
z = tf.concat((x,y), axis = 0) 

Nicht erlaubt: (Form 100 und 200 Mismatch)

x = tf.placeholder(tf.float32, (100, None)) 
y = tf.placeholder(tf.float32, (200, None)) 
z = tf.concat((x,y), axis = 1) 

erlaubt: (Same dtype und Achse übereinstimmen)

x = tf.placeholder(tf.float32, (100, 300)) 
y = tf.placeholder(tf.float32, (200, 300)) 
z = tf.concat((x,y), axis = 0) 

Im obigen Beispiel, wenn Sie None wie in anderen Beispielen verwenden, wird es kompiliert, aber während der Laufzeit muss die None die gleiche Form darstellen.

Verwandte Themen