2017-09-01 4 views
1

est-il une méthode dans tensorflow peut obtenir l'assignation de radiodiffusion à la matrice (tf.Variable) quelque chose comme le code suivant ....variables tensorflow affecter la diffusion

a = tf.Variable(np.zeros([10,10,10,10], np.int32)) 

# creating a mask and trying to assign the 2nd, 3rd dimension of a 
mask = tf.ones([10,10]) 

# 1) which is work in this case, but only assign one block 
op = a[0,:,:,0].assign(mask) 

# 2) attempting to broadcasting while not work, size mismatch 
op = a[0].assign(mask) 

pour moi la solution actuelle pourrait itérer tous les autres dimensions, mais pourrait souffrir de boucle imbriquée comme dans 1) ou il doit y avoir une façon plus intelligente de le faire, merci!

Répondre

0

Pas une solution générale (beaucoup de formes de tenseur hardcoded), mais nous espérons que cela vous donne l'essentiel pour votre exemple:

a = tf.Variable(np.zeros([10,10,10,10], np.int32)) 
mask = tf.ones([10,10],dtype=tf.int32) 
mask_reshaped = tf.reshape(mask,[1,10,10,1]) # make the number of dims match 
mask_broadcast = tf.tile(mask_reshaped, [10, 1, 1, 10]) # do the actual broadcast 
op = a.assign(mask_broadcast) 
+0

Quelle belle affaire! Merci! c'est vraiment propre. –