最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch torch.unique() 基礎(chǔ)與實戰(zhàn)應(yīng)用指南

 更新時間:2025年10月29日 11:23:04   作者:Geoking.  
torch.unique() 是PyTorch中的一個去重函數(shù),用于返回張量中所有的唯一元素(unique elements),本文將帶你深入了解 torch.unique() 的用法、參數(shù)、返回值以及實際應(yīng)用場景,感興趣的朋友跟隨小編一起看看吧

在深度學(xué)習(xí)的數(shù)據(jù)處理中經(jīng)常需要統(tǒng)計或篩選 張量(Tensor) 中的唯一值,比如去重、統(tǒng)計類別數(shù)量、計算唯一標(biāo)簽數(shù)等。
PyTorch 提供了一個非常方便的函數(shù) —— torch.unique(),可以輕松完成這些操作。

本文將帶你深入了解 torch.unique() 的用法、參數(shù)、返回值以及實際應(yīng)用場景。

一、什么是torch.unique()?

torch.unique() 是 PyTorch 中的一個去重函數(shù),用于返回張量中所有的唯一元素(unique elements)。

它類似于 Python 的 set() 或 NumPy 的 np.unique(),但專為 GPU 加速的張量操作 設(shè)計。

二、函數(shù)語法

torch.unique(input, sorted=True, return_inverse=False, return_counts=False, dim=None)

三、參數(shù)說明

參數(shù)類型說明
inputTensor輸入張量
sortedbool是否對結(jié)果排序(默認(rèn) True
return_inversebool是否返回原張量中每個值在唯一值列表中的索引
return_countsbool是否返回每個唯一值的出現(xiàn)次數(shù)
dimintNone按指定維度去重,默認(rèn)對整個張量去重

四、基本用法

?? 示例 1:基礎(chǔ)去重

import torch
x = torch.tensor([1, 2, 2, 3, 3, 3])
unique_x = torch.unique(x)
print(unique_x)

輸出:

tensor([1, 2, 3])

? 結(jié)果去除了重復(fù)值,并自動排序。

?? 示例 2:不排序

x = torch.tensor([3, 2, 1, 3, 2])
unique_x = torch.unique(x, sorted=False)
print(unique_x)

輸出:

tensor([3, 2, 1])

當(dāng) sorted=False 時,結(jié)果的順序與首次出現(xiàn)的順序一致。

五、返回索引與計數(shù)

?? 示例 3:return_inverse

return_inverse=True 會返回一個索引張量,表示原張量中每個元素在唯一值(即新張量)中的位置。

x = torch.tensor([2, 1, 2, 3])
u, inv = torch.unique(x, return_inverse=True)
print(u)
print(inv)

輸出:

tensor([1, 2, 3])
tensor([1, 0, 1, 2])

解釋:

  • 唯一值為 [1, 2, 3]
  • 原數(shù)組 [2, 1, 2, 3] 中:
    • 第一個元素 2 → 索引 1
    • 第二個元素 1 → 索引 0
    • 第三個元素 2 → 索引 1
    • 第四個元素 3 → 索引 2

?? 示例 4:return_counts

return_counts=True 會返回每個唯一值出現(xiàn)的次數(shù)。

x = torch.tensor([1, 2, 2, 3, 3, 3])
u, counts = torch.unique(x, return_counts=True)
print(u)
print(counts)

輸出:

tensor([1, 2, 3])
tensor([1, 2, 3])

表示:

  • 值 1 出現(xiàn) 1 次
  • 值 2 出現(xiàn) 2 次
  • 值 3 出現(xiàn) 3 次

?? 示例 5:同時返回多個結(jié)果

你可以同時返回 unique 值、inverse 索引和計數(shù)

x = torch.tensor([1, 2, 2, 3, 3, 3])
u, inv, counts = torch.unique(x, return_inverse=True, return_counts=True)
print(u)
print(inv)
print(counts)

輸出:

tensor([1, 2, 3])
tensor([0, 1, 1, 2, 2, 2])
tensor([1, 2, 3])

六、按維度去重(dim 參數(shù))

默認(rèn)情況下,torch.unique() 會將張量展開成一維后去重。
但如果你希望在特定維度上去重(如按行或按列),可以使用 dim 參數(shù)。

?? 示例 6:按行去重

x = torch.tensor([[1, 2],
                  [1, 2],
                  [3, 4]])
unique_rows = torch.unique(x, dim=0)
print(unique_rows)

輸出:

tensor([[1, 2],
        [3, 4]])

表示第 1、2 行重復(fù),只保留一個。

?? 示例 7:按列去重

x = torch.tensor([[1, 1, 3],
                  [2, 2, 4]])
unique_cols = torch.unique(x, dim=1)
print(unique_cols)

輸出:

tensor([[1, 3],
        [2, 4]])

七、torch.unique()與 NumPy 對比

功能PyTorch (torch.unique)NumPy (np.unique)
默認(rèn)排序? 是? 是
支持 GPU? 是? 否
返回 inverse 索引? 是? 是
返回 counts? 是? 是
按維度去重? 是(dim? 不直接支持
性能高(GPU 支持)僅 CPU

八、實際應(yīng)用場景

1. 分類問題中統(tǒng)計類別數(shù)量

labels = torch.tensor([0, 1, 0, 2, 2, 1, 3])
classes = torch.unique(labels)
print(f"共有 {len(classes)} 個類別: {classes.tolist()}")

輸出:

共有 4 個類別: [0, 1, 2, 3]

2. 計算樣本分布(類別頻率)

labels = torch.tensor([0, 1, 0, 2, 2, 1, 3])
u, counts = torch.unique(labels, return_counts=True)
for c, cnt in zip(u.tolist(), counts.tolist()):
    print(f"類別 {c}: {cnt} 個樣本")

輸出:

類別 0: 2 個樣本
類別 1: 2 個樣本
類別 2: 2 個樣本
類別 3: 1 個樣本

3. 在圖像分割中統(tǒng)計像素類別

例如在語義分割任務(wù)中,計算 mask 圖像中有多少個不同的像素類別:

mask = torch.randint(0, 5, (256, 256))  # 隨機生成類別標(biāo)簽
num_classes = len(torch.unique(mask))
print(f"圖像中共有 {num_classes} 個類別")

?? 九、注意事項

  1. torch.unique()** 默認(rèn)會對結(jié)果排序**,如果在意性能,可以設(shè)置 sorted=False
  2. 對高維張量使用 dim 去重時,必須保證該維度的所有元素形狀一致。
  3. 對大張量使用 return_countsreturn_inverse 時可能會消耗更多顯存。

?? 參考資料

NumPy 官方文檔 – numpy.unique

到此這篇關(guān)于PyTorch torch.unique() 基礎(chǔ)與實戰(zhàn)應(yīng)用指南的文章就介紹到這了,更多相關(guān)PyTorch torch.unique() 使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python 查找文件名包含指定字符串的方法

    python 查找文件名包含指定字符串的方法

    今天小編就為大家分享一篇python 查找文件名包含指定字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python如何對鏈表操作

    python如何對鏈表操作

    這篇文章主要介紹了python如何對鏈表操作,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-10-10
  • Python解析壓縮包內(nèi)部文件的后綴名并分類存放

    Python解析壓縮包內(nèi)部文件的后綴名并分類存放

    這篇文章主要為大家詳細(xì)介紹了如何使用Python解析壓縮包內(nèi)部文件的后綴名并分類存放,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • python中的%?是什么意思,起到什么作用呢

    python中的%?是什么意思,起到什么作用呢

    %Y會被無世紀(jì)的年份所替代,%m會被01到12之間的一個十進(jìn)制月份數(shù)替代,其他依次類推,%在python的格式化輸出,有轉(zhuǎn)換字符的作用,本文給大家講解python中的%?是什么意思,起到什么作用,感興趣的朋友一起看看吧
    2022-12-12
  • 10個易被忽視但應(yīng)掌握的Python基本用法

    10個易被忽視但應(yīng)掌握的Python基本用法

    這篇文章主要介紹了10個易被忽視但應(yīng)掌握的Python基本用法,如字典推導(dǎo)、內(nèi)省工具等,主要針對Python3版本,需要的朋友可以參考下
    2015-04-04
  • python實現(xiàn)逆波蘭計算表達(dá)式實例詳解

    python實現(xiàn)逆波蘭計算表達(dá)式實例詳解

    這篇文章主要介紹了python實現(xiàn)逆波蘭計算表達(dá)式的方法,較為詳細(xì)的分析了逆波蘭表達(dá)式的概念及實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • 使用Python對微信好友進(jìn)行數(shù)據(jù)分析

    使用Python對微信好友進(jìn)行數(shù)據(jù)分析

    這篇文章主要介紹了使用Python對微信好友進(jìn)行數(shù)據(jù)分析的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • python發(fā)送json參數(shù)的實例代碼

    python發(fā)送json參數(shù)的實例代碼

    在寫腳本的過程中,除了發(fā)送form表單參數(shù)之外,我們還會發(fā)送json格式的參數(shù)。那么碰見json格式要怎么發(fā)送呢,這篇我們來解決這個問題,需要的朋友可以參考下
    2019-10-10
  • python中異常的傳播詳解

    python中異常的傳播詳解

    大家好,本篇文章主要講的是python中異常的傳播詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • python3 發(fā)送任意文件郵件的實例

    python3 發(fā)送任意文件郵件的實例

    下面小編就為大家分享一篇python3 發(fā)送任意文件郵件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論

区。| 怀化市| 翁牛特旗| 蓝山县| 红安县| 略阳县| 太保市| 柞水县| 突泉县| 同心县| 安仁县| 盘山县| 屏东县| 霞浦县| 嵩明县| 福建省| 肇庆市| 千阳县| 历史| 沭阳县| 遂溪县| 泽普县| 崇文区| 太湖县| 博爱县| 阜南县| 横峰县| 沂源县| 新密市| 马鞍山市| 锡林郭勒盟| 成武县| 龙岩市| 枝江市| 利川市| 奉贤区| 长宁区| 类乌齐县| 泽库县| 瑞丽市| 息烽县|