python tensorflow indices

En TensorFlow, ¿cómo puedo obtener valores distintos de cero y sus índices de un tensor con python?



indices (2)

Puede obtener el mismo resultado en Tensorflow utilizando not_equal y where métodos.

zero = tf.constant(0, dtype=tf.float32) where = tf.not_equal(A, zero)

where es un tensor de la misma forma que A manteniendo True o False , en el siguiente caso

[[True, False], [False, True]]

Esto sería suficiente para seleccionar cero o elementos no cero de A Si desea obtener índices, puede utilizar el método where siguiente manera:

indices = tf.where(where)

where tensor tiene dos valores True , por lo que los indices tendrán dos entradas. where tensor tiene rango de dos, por lo que las entradas tendrán dos índices:

[[0, 0], [1, 1]]

Quiero hacer algo como esto.
Digamos que tenemos un tensor A.

A = [[1,0],[0,4]]

Y quiero obtener valores distintos de cero y sus índices.

Nonzero values: [1,4] Nonzero indices: [[0,0],[1,1]]

Hay operaciones similares en Numpy.
np.flatnonzero(A) devuelve índices que son distintos de cero en el aplanado A.
x.ravel()[np.flatnonzero(x)] extrae elementos de acuerdo con índices distintos de cero.
Aquí hay un enlace para estas operaciones.

¿Cómo puedo hacer algo como las operaciones anteriores de Numpy en Tensorflow con python?
(Si una matriz es aplanada o no realmente no importa).


#assume that an array has 0, 3.069711, 3.167817. mask = tf.greater(array, 0) non_zero_array = tf.boolean_mask(array, mask)