2017-06-06 2 views
2

j'ai une entrée [n, m] et [n, m] masque booléenne. Comment pourrais-je produire une matrice filtrée [n, x], au lieu de [x] tableau?
Par exemple, l'entréesortie 2d valeur masquée par boolean tensorflow

x = [[1,2,3],[4,5,6]] 

et un masque booléen

bm = [[1,0,1],[1,0,0]] 

J'ai essayé d'utiliser tf.boolean_mask() et je suis arrivé [1,3,4]. Comment pourrais-je obtenir un résultat 2D comme

result = [[1,3],[4]] 

Merci!

Répondre

1

Cette opération ne peut exister dans TF car TF fonctionne sur les tenseurs et retourne tenseurs. Le résultat que vous avez reçu a un nombre différent d'éléments et non un tenseur.

+0

Eh oui, mieux que vous pouvez faire est le tenseur 1d sauf si vous voulez utiliser des valeurs sentinelles. – Alex

0

Il n'y a aucun moyen de le faire dans TF. Cependant, vous pouvez utiliser Masked Array en numpy. Vous pouvez faire quelque chose comme

>>> import numpy as np, numpy.ma as ma 
>>> x = ma.array([1., -1., 3., 4., 5., 6.], mask=[0,0,0,0,1,0]) 
>>> y = ma.array([1., 2., 0., 4., 5., 6.], mask=[0,0,0,0,0,1]) 
>>> print np.sqrt(x/y) 
[1.0 -- -- 1.0 -- --]