2016-08-30 6 views
13

Böyle bir şey yapmak istiyorum.
en bir tensör A.TensorFlow'da, sıfır olmayan değerleri ve indekslerini bir tensörden python ile nasıl alabilirim?

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

var Ve ben ondan sıfırdan farklı değerleri ve bunların endekslerini almak istiyorum diyelim.

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

Numpy'de benzer işlemler var.
np.flatnonzero(A) Düzleştirilmiş A'da sıfır olmayan indeksler, sıfır olmayan indislere göre elemanlar çıkarılmalıdır. Bu işlemler için a link.

Tensorflow'da python ile Numpy işlemlerinde nasıl bir şey yapabilirim?
(bir matris düzleştirilmiş olsun ya da olmasın fark etmez.)

cevap

22

Sen not_equal ve where yöntemler kullanılarak Tensorflow aynı sonucu elde edebilirsiniz.

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

whereA aynı şekilde bir tensör Bu A sıfır veya sıfır olmayan elemanları seçmek için yeterli olacaktır

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

aşağıdaki durumda, True veya False tutma olduğunu. Eğer indekslerini belirlemek istiyorsanız aşağıdaki gibi where yöntemi kullanabilirsiniz:

indices = tf.where(where) 

where tensör iki True değerlere sahip böylece indices tensör iki girişe sahip olacaktır. girişler iki endeks olacak böylece where tensör, ikisinin bir sıralamaya sahip:

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

nasıl boole matristen dizi alacak? Ben boolean indeksleme uygulanmış olduğunu düşünmüyorum henüz – martianwars

+1

@martianwars '' '' 'belgelerine bağlantıyı bakın. Boole'ları kabul eder ve karşılık gelen endeksleri bir tensör üretir. –

+0

Hayır Bu endekslerdeki değerleri kastediyorum. Ben bir boolean maskesi kullanarak yaptım – martianwars

İlgili konular