您好,登錄后才能下訂單哦!
首先使用tf.where()將滿足條件的數(shù)值索引取出來(lái),在numpy中,可以直接用矩陣引用索引將滿足條件的數(shù)值取出來(lái),但是在tensorflow中這樣是不行的。所幸,tensorflow提供了tf.gather()和tf.gather_nd()函數(shù)。
看下面這一段代碼:
import tensorflow as tf sess = tf.Session() def get_tensor(): x = tf.random_uniform((5, 4)) ind = tf.where(x>0.5) y = tf.gather_nd(x, ind) return x, ind, y
在上述代碼中,輸出分別是原始的tensor x,x中滿足特定條件(此處為>0.5)的數(shù)值的索引,以及x中滿足特定條件的數(shù)值。執(zhí)行以下步驟,觀察三個(gè)tensor對(duì)應(yīng)的數(shù)值:
x, ind, y = get_tensor() x_, ind_, y_ = sess.run([x, ind, y])
可以得到如下結(jié)果:
可以看到,上述結(jié)果中將tensor x中大于0.5的數(shù)值取出來(lái)組成了一個(gè)新的tensor y。
如果我們將代碼中的tf.gather_nd替換成tf.gather會(huì)發(fā)生什么呢?由于結(jié)果不方便展示,這里不放結(jié)果了,tf.gather適用于index為一維的情況,在本例中,index為2維,如果選用tf.gather的話,對(duì)應(yīng)的x, ind, y的維數(shù)分別如下:
x.shape = (5, 4) ind.shape = (9, 2) y.shape = (9, 2, 4)
以上這篇tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。