溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor

發(fā)布時(shí)間:2020-08-29 04:02:18 來(lái)源:腳本之家 閱讀:407 作者:u010551462 欄目:開(kāi)發(fā)技術(shù)

首先使用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é)果:

tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor

tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor

可以看到,上述結(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è)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI