亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyTorch中topk函數的用法詳解

發布時間:2020-08-20 00:32:33 來源:腳本之家 閱讀:1348 作者:咆哮的阿杰 欄目:開發技術

聽名字就知道這個函數是用來求tensor中某個dim的前k大或者前k小的值以及對應的index。

用法

torch.topk(input, k, dim=None, largest=True, sorted=True, out=None) -> (Tensor, LongTensor)

input:一個tensor數據

k:指明是得到前k個數據以及其index

dim: 指定在哪個維度上排序, 默認是最后一個維度

largest:如果為True,按照大到小排序; 如果為False,按照小到大排序

sorted:返回的結果按照順序返回

out:可缺省,不要

topk最常用的場合就是求一個樣本被網絡認為前k個最可能屬于的類別。我們就用這個場景為例,說明函數的使用方法。

假設一個PyTorch中topk函數的用法詳解,N是樣本數目,一般等于batch size, D是類別數目。我們想知道每個樣本的最可能屬于的那個類別,其實可以用torch.max得到。如果要使用topk,則k應該設置為1。

import torch

pred = torch.randn((4, 5))
print(pred)
values, indices = pred.topk(1, dim=1, largest=True, sorted=True)
print(indices)
# 用max得到的結果,設置keepdim為True,避免降維。因為topk函數返回的index不降維,shape和輸入一致。
_, indices_max = pred.max(dim=1, keepdim=True)

print(indices_max == indices)
# pred
tensor([[-0.1480, -0.9819, -0.3364, 0.7912, -0.3263],
    [-0.8013, -0.9083, 0.7973, 0.1458, -0.9156],
    [-0.2334, -0.0142, -0.5493, 0.0673, 0.8185],
    [-0.4075, -0.1097, 0.8193, -0.2352, -0.9273]])
# indices, shape為 【4,1】,
tensor([[3],  #【0,0】代表 第一個樣本最可能屬于第一類別
    [2],  # 【1, 0】代表第二個樣本最可能屬于第二類別
    [4],
    [2]])
# indices_max等于indices
tensor([[True],
    [True],
    [True],
    [True]])

現在在嘗試一下k=2

import torch

pred = torch.randn((4, 5))
print(pred)
values, indices = pred.topk(2, dim=1, largest=True, sorted=True) # k=2
print(indices)
# pred
tensor([[-0.2203, -0.7538, 1.8789, 0.4451, -0.2526],
    [-0.0413, 0.6366, 1.1155, 0.3484, 0.0395],
    [ 0.0365, 0.5158, 1.1067, -0.9276, -0.2124],
    [ 0.6232, 0.9912, -0.8562, 0.0148, 1.6413]])
# indices
tensor([[2, 3],
    [2, 1],
    [2, 1],
    [4, 1]])

可以發現indices的shape變成了【4, k】,k=2。

其中indices[0] = [2,3]。其意義是說明第一個樣本的前兩個最大概率對應的類別分別是第3類和第4類。

大家可以自行print一下values。可以發現values的shape和indices的shape是一樣的。indices描述了在values中對應的值在pred中的位置。

以上這篇PyTorch中topk函數的用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

米易县| 南充市| 屯留县| 嘉兴市| 攀枝花市| 合阳县| 塘沽区| 广宗县| 霍城县| 涞水县| 山阳县| 遂宁市| 梨树县| 南华县| 淮安市| 麻阳| 厦门市| 辉南县| 正安县| 体育| 奉化市| 麻城市| 雷波县| 大兴区| 通州区| 奉贤区| 白城市| 湖北省| 宣城市| 三明市| 永康市| 浑源县| 丰台区| 上思县| 西乌珠穆沁旗| 建水县| 舞钢市| 辉南县| 凤翔县| 乐昌市| 朝阳县|