2017-05-31 3 views
-1

Wie kann ichgleichwertige Liste Verständnis in tensorflow

in Python so etwas wie ein Tensor der Stufe 1, die N int auf einen Tensor der Stufe 2, die N Vektor der Größe M mit einem Wörterbuch ändern:

dict = {1 : [1,2,3] , 2 : [3,2,1]} 
array1 = np.array([1,1,2,1,2]) 
array2 = np.array([dict[x] for x in array1]) 

aber ich kann nicht einen Tensor iterieren (abgesehen von while-Schleife, aber ich glaube nicht, dass es die optimale Lösung)

Antwort

0

Wenn die dict Sie haben so etwas wie

ist
dict = {1: tf.constant([1, 2, 3]), 2: tf.constant([1, 2, 3])} 
tensor1 = tf.constant([1, 1, 2, 1, 2]) 

dann so etwas wie dies sollte die Arbeit machen:

vals = [dict[tensor1[k]] for k in range(tensor1.get_shape().as_list()[0])] 
tensor2 = tf.stack(vals, axis=0) 

Es komplizierter wird, wenn Sie unbekannte Dimensionen haben. Zum Beispiel sehe ich keine Lösungen, die tf.while_loop nicht betreffen, wenn die Form von Tensor1 unbekannt ist.

+0

Ich denke, ich vermisse etwas, ich bekomme Fehler KeyError: