張量的高級操作tf.gather、tf.gather_nd

tf.gather

tf.gather可以實(shí)現(xiàn)根據(jù)索引號(hào)收集數(shù)據(jù)的目的覆旱≌号螅考慮班級成績冊的例子,假設(shè)共有4個(gè)班級扣唱,每個(gè)班級35個(gè)學(xué)生藕坯,8門科目,保存成績冊的張量shape為[4,35,8]

x=tf.random.uniform([4,35,8],maxval=100,dtype=tf.int32)  # 成績冊張量

現(xiàn)在需要收集第1~2個(gè)班級的成績冊噪沙,可以給定需要收集班級的索引號(hào):[0,1]炼彪,并指定班級的維度axis=0,通過tf.gather函數(shù)收集數(shù)據(jù)正歼,帶碼如下:

tf.gather(x,[0,1],axis=0)  # 在班級維度收集1~2班級成績冊

實(shí)際上辐马,對于上述需求,通過切片x[:2]可以更加方便的實(shí)現(xiàn)局义。但是對于不規(guī)則的索引方式喜爷,比如,需要抽查所有班級的第1萄唇、4檩帐、9、12另萤、13湃密、27號(hào)學(xué)生的成績數(shù)據(jù),則切片方式實(shí)現(xiàn)起來非常麻煩四敞,而tf.gather則是針對于此需求設(shè)計(jì)的勾缭,使用起來更加方便,實(shí)現(xiàn)如下:

tf.gather(x, [0,3,8,11,12,26],axis=1)

如果需要收集所有同學(xué)的第3和第5門科目的成績目养,則可以指定科目維度axis=2俩由,實(shí)現(xiàn)如下:

tf.gather(x,[2,4],axis=2)

可以看到,tf.gather非常適合索引號(hào)沒有規(guī)則的場合癌蚁,其中索引號(hào)可以亂序排序幻梯,此時(shí)收集的數(shù)據(jù)也是對應(yīng)順序兜畸,例如:

a = tf.range(8)
a = tf.reshape(a, [4,2])
print(a)
print(tf.gather(a, [3,1,0,2], axis=0))

我們將問題變得稍微復(fù)雜一點(diǎn)。如果希望抽查第[2,3]班級的第[3,4,6,27]號(hào)同學(xué)的科目成績碘梢,則可以通過組合多個(gè)tf.gather實(shí)現(xiàn)咬摇。首先抽出第[2,3]班級,實(shí)現(xiàn)如下:

student = tf.gather(x, [1,2], axis=0)

再從這2個(gè)班級的同學(xué)中提取對應(yīng)學(xué)生成績煞躬,代碼如下:

tf.gather(student, [2,3,5,26],axis=1)

此時(shí)得到這2個(gè)班級4個(gè)學(xué)生的成績張量肛鹏,shape為[2,4,8]

tf.gather_nd

通過tf.gather_nd函數(shù),可以通過指定每次采樣點(diǎn)的多維坐標(biāo)實(shí)現(xiàn)采樣多個(gè)點(diǎn)的目的恩沛。抽查第2個(gè)班級的第2個(gè)同學(xué)的所有科目在扰,第3個(gè)班級的第3個(gè)同學(xué)的所有科目,第4個(gè)班級的第4個(gè)同學(xué)的所有科目雷客。那么這3個(gè)采樣點(diǎn)的索引坐標(biāo)可以記為:[1,1][2,2][3,3]芒珠,我們將這個(gè)采樣方案合并一個(gè)List參數(shù),即[[1,1][2,2][3,3]]搅裙,通過tf.gather_nd函數(shù)即可皱卓,實(shí)現(xiàn)如下:

tf.gather_nd(x, [[1,1],[2,2],[3,3]])

可以看到,結(jié)果與串行采樣方式的完全一樣部逮,實(shí)現(xiàn)更加簡潔娜汁,計(jì)算效率大大提升。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末兄朋,一起剝皮案震驚了整個(gè)濱河市掐禁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜈漓,老刑警劉巖穆桂,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異融虽,居然都是意外死亡享完,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門有额,熙熙樓的掌柜王于貴愁眉苦臉地迎上來般又,“玉大人,你說我怎么就攤上這事巍佑≤钋ǎ” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵萤衰,是天一觀的道長堕义。 經(jīng)常有香客問我,道長脆栋,這世上最難降的妖魔是什么倦卖? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任洒擦,我火速辦了婚禮,結(jié)果婚禮上怕膛,老公的妹妹穿的比我還像新娘熟嫩。我一直安慰自己,他們只是感情好褐捻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布掸茅。 她就那樣靜靜地躺著,像睡著了一般柠逞。 火紅的嫁衣襯著肌膚如雪昧狮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天边苹,我揣著相機(jī)與錄音陵且,去河邊找鬼裁僧。 笑死个束,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的聊疲。 我是一名探鬼主播茬底,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼获洲!你這毒婦竟也來了阱表?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贡珊,失蹤者是張志新(化名)和其女友劉穎最爬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體门岔,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡爱致,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寒随。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糠悯。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖妻往,靈堂內(nèi)的尸體忽然破棺而出互艾,到底是詐尸還是另有隱情,我是刑警寧澤讯泣,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布纫普,位于F島的核電站,受9級特大地震影響好渠,放射性物質(zhì)發(fā)生泄漏昨稼。R本人自食惡果不足惜溉箕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悦昵。 院中可真熱鬧肴茄,春花似錦、人聲如沸但指。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棋凳。三九已至拦坠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剩岳,已是汗流浹背贞滨。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拍棕,地道東北人晓铆。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像绰播,于是被迫代替她去往敵國和親骄噪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354