2017-05-13 18 views
1

Ich habe einen Platzhalter mit der Form, die von einem anderen Platzhalter abhängt. Wie kann ich sie während der Platzhalterinitialisierung verbinden?Tesorflow-Platzhalter hängt von anderem Platzhalter ab

nUsers = tf.placeholder(tf.float32, [None, 1]) 
p = tf.placeholder(tf.float32, [None, 10 , ???]) 

... in ??? Ich muss die Größe angeben, die durch die Nummer angegeben wird, die in nUsers für diesen Artikel des Stapels vorhanden ist.

Antwort

1

Sie können die Form des Tensors mit x.get_shape() (check the difference zwischen tf.shape(x)) leicht erhalten. Sie benötigen also etwa Folgendes:

import tensorflow as tf 
import numpy as np 
nUsers = tf.placeholder(tf.float32, [None, 1]) 
p = tf.placeholder(tf.float32, [None, 10 , nUsers.get_shape()[0]]) 

with tf.Session() as sess: 
    print sess.run(p, {nUsers: np.ones((2, 1)), p: np.ones((3, 10, 2))}) 
+0

In diesem Code wird die Form von p durch die Form von nUsers bestimmt. Was aber, wenn die Form von p durch den Wert von nUsers bestimmt wird? –

+0

@ D.Giunchi das wäre eine ganz andere Frage mit einer anderen Antwort. Auch in dieser Frage müssen Sie angeben, wie der Wert eines Tensors dort verwendet werden soll. –

+0

Aber wenn Sie meine ursprüngliche Frage überprüfen, wurde erwähnt, dass ich den Wert von den nUsers brauchte und nicht die Form, um eine andere Form zu bestimmen. nUsers ist im Grunde eine Zahl, und in jedem Stapel habe ich einen Vektor von ihnen. Für jeden Eintrag des Stapels habe ich eine Anzahl von Benutzern, die eine bestimmte Aufgabe erledigt haben, und ich benutze diese Nummer, um die Größe eines anderen Platzhalters zu bestimmen. Ich ging voran und versuchte es mit None (da es variiert), aber ich habe andere Probleme, die mich denken lassen, dass ich diesen Platzhalter mit einer konstanten Größe betrachten sollte. Meine Lösung besteht also darin, das zweite Array zu füllen und es von konstanter Größe zu betrachten. –

Verwandte Themen