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

PyTorch中tensor.squeeze()?使用小結(jié)

 更新時(shí)間:2025年11月24日 10:13:29   作者:Geoking.  
本文主要介紹了PyTorch中tensor.squeeze()使用小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在深度學(xué)習(xí)中經(jīng)常會(huì)處理各種形狀(shape)復(fù)雜的張量(tensor)。
有時(shí)候,模型的輸入或輸出會(huì)多出一些沒(méi)用的“維度”,例如 (1, 3, 1, 224, 224)
這時(shí),PyTorch 提供了一個(gè)非常實(shí)用的函數(shù) —— torch.squeeze(),可以幫我們輕松去除大小為 1 的維度。

本文將帶你從入門到實(shí)戰(zhàn),徹底掌握 squeeze() 的使用方法與常見(jiàn)坑。??

一、函數(shù)簡(jiǎn)介

官方定義

torch.squeeze(input, dim=None) → Tensor

作用:

返回一個(gè)新的張量,去掉所有大小為 1 的維度。
如果指定了 dim 參數(shù),則只會(huì)在那個(gè)維度上去除大小為 1 的維度。

squeeze 本身英文釋義如下:

二、為什么需要squeeze()?

在深度學(xué)習(xí)中,模型輸入輸出的維度往往需要嚴(yán)格匹配。
但是,在數(shù)據(jù)加載或卷積操作之后,可能會(huì)出現(xiàn)一些“冗余維度”。

舉個(gè)例子:

import torch

x = torch.randn(1, 3, 1, 4)
print(x.shape)

輸出:

torch.Size([1, 3, 1, 4])

可以看到,這個(gè)張量的第 0 和第 2 維都是大小為 1 的“空維度”。
這些維度不會(huì)存儲(chǔ)實(shí)際信息,但可能會(huì)導(dǎo)致維度不匹配錯(cuò)誤。

這時(shí),我們就可以用:

x.squeeze()

輸出:

torch.Size([3, 4])

? 所有大小為 1 的維度都被自動(dòng)去掉!

三、函數(shù)語(yǔ)法與參數(shù)說(shuō)明

參數(shù)類型說(shuō)明
inputTensor輸入張量
dimint, 可選指定要壓縮的維度
返回值Tensor新張量(共享存儲(chǔ),不復(fù)制數(shù)據(jù))

四、示例講解

1、去除所有大小為 1 的維度

x = torch.randn(1, 3, 1, 4, 1)
print("原形狀:", x.shape)
y = torch.squeeze(x)
print("壓縮后:", y.shape)

輸出:

原形狀: torch.Size([1, 3, 1, 4, 1])
壓縮后: torch.Size([3, 4])

說(shuō)明:
squeeze() 去掉了所有維度為 1 的軸。

2、指定某個(gè)維度壓縮

有時(shí)候我們不想去掉所有維度,只想處理特定的一個(gè)。

x = torch.randn(1, 3, 1, 4)
print("原形狀:", x.shape)
y = torch.squeeze(x, dim=0)
print("壓縮后:", y.shape)

輸出:

原形狀: torch.Size([1, 3, 1, 4])
壓縮后: torch.Size([3, 1, 4])

?? 只去掉了第 0 維,因?yàn)樗拇笮∈?1。
其他維度保持不變。

3、如果指定的維度不是 1,會(huì)怎樣?

x = torch.randn(2, 1, 3)
y = torch.squeeze(x, dim=0)
print(y.shape)

輸出:

torch.Size([2, 1, 3])

沒(méi)有任何變化,因?yàn)榈?0 維的大小是 2,不是 1。
squeeze() 只會(huì)壓縮大小為 1 的維度,不會(huì)報(bào)錯(cuò)。

五、與unsqueeze()的關(guān)系

如果說(shuō) squeeze() 是“去掉維度”,
unsqueeze() 就是“增加維度”。

x = torch.tensor([1, 2, 3])
print(x.shape)  # torch.Size([3])

y = x.unsqueeze(0)
print(y.shape)  # torch.Size([1, 3])

z = y.squeeze(0)
print(z.shape)  # torch.Size([3])

? unsqueeze()squeeze() 是一對(duì)反操作。
一個(gè)增加維度,一個(gè)去除維度。

六、常見(jiàn)應(yīng)用場(chǎng)景

1、數(shù)據(jù)集加載時(shí)去掉多余維度

# 讀取圖片后通常是 (1, H, W)
img = torch.randn(1, 224, 224)
img = img.squeeze(0)
print(img.shape)  # torch.Size([224, 224])

2、模型輸出后去掉 batch 維度

# 例如分類模型輸出 [1, num_classes]
output = torch.randn(1, 10)
pred = output.squeeze(0)
print(pred.shape)  # torch.Size([10])

3、多維卷積層結(jié)果調(diào)整

Conv2d、LSTM 等層輸出中,有時(shí)需要將 [batch, seq_len, 1] 變成 [batch, seq_len]

out = torch.randn(32, 100, 1)
out = out.squeeze(-1)
print(out.shape)  # torch.Size([32, 100])

?? 七、注意事項(xiàng)與坑點(diǎn)

問(wèn)題說(shuō)明
? 誤刪維度默認(rèn)不傳 dim 會(huì)刪除所有大小為 1 的維度,可能導(dǎo)致形狀變化過(guò)多
? 建議當(dāng)只想去掉某個(gè)維度時(shí),一定要寫 dim 參數(shù)
?? 內(nèi)存共享squeeze() 返回的張量與原張量共享內(nèi)存,不會(huì)復(fù)制數(shù)據(jù)

八、擴(kuò)展:與 NumPy 對(duì)比

PyTorch 的 squeeze() 和 NumPy 的 numpy.squeeze() 功能幾乎一致。

import numpy as np

a = np.random.randn(1, 3, 1, 4)
print(a.shape)  # (1, 3, 1, 4)
print(a.squeeze().shape)  # (3, 4)

如果熟悉 NumPy 的用法,PyTorch 中也能無(wú)縫銜接。

九、總結(jié)

功能說(shuō)明
函數(shù)torch.squeeze(input, dim=None)
作用刪除大小為 1 的維度
參數(shù)dim:指定要壓縮的維度(可選)
返回新張量(共享內(nèi)存)
反操作unsqueeze()
常用場(chǎng)景模型輸出處理、數(shù)據(jù)預(yù)處理、維度調(diào)整

十、參考資料

到此這篇關(guān)于PyTorch中tensor.squeeze() 使用小結(jié)的文章就介紹到這了,更多相關(guān)PyTorch tensor.squeeze()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pandas進(jìn)行數(shù)據(jù)輸入和輸出的方法詳解

    pandas進(jìn)行數(shù)據(jù)輸入和輸出的方法詳解

    這篇文章主要為大家詳細(xì)介紹了pandas進(jìn)行數(shù)據(jù)輸入和輸出的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • Python通過(guò)fnmatch模塊實(shí)現(xiàn)文件名匹配

    Python通過(guò)fnmatch模塊實(shí)現(xiàn)文件名匹配

    這篇文章主要介紹了Python通過(guò)fnmatch模塊實(shí)現(xiàn)文件名匹配,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python3標(biāo)準(zhǔn)庫(kù)之threading進(jìn)程中管理并發(fā)操作方法

    Python3標(biāo)準(zhǔn)庫(kù)之threading進(jìn)程中管理并發(fā)操作方法

    這篇文章主要介紹了Python3標(biāo)準(zhǔn)庫(kù)之threading進(jìn)程中管理并發(fā)操作方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python安裝自己的代碼到site-packages問(wèn)題

    python安裝自己的代碼到site-packages問(wèn)題

    這篇文章主要介紹了python安裝自己的代碼到site-packages問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 使用Python進(jìn)行AES加密和解密的示例代碼

    使用Python進(jìn)行AES加密和解密的示例代碼

    這篇文章主要介紹了使用Python進(jìn)行AES加密和解密的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Python爬蟲(chóng)DOTA排行榜爬取實(shí)例(分享)

    Python爬蟲(chóng)DOTA排行榜爬取實(shí)例(分享)

    下面小編就為大家?guī)?lái)一篇Python爬蟲(chóng)DOTA排行榜爬取實(shí)例(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • python連接池實(shí)現(xiàn)示例程序

    python連接池實(shí)現(xiàn)示例程序

    這篇文章主要介紹了python連接池實(shí)現(xiàn),大家參考使用
    2013-11-11
  • Django 配置多站點(diǎn)多域名的實(shí)現(xiàn)步驟

    Django 配置多站點(diǎn)多域名的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Django 配置多站點(diǎn)多域名的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python中輸入和輸出格式化操作詳解

    Python中輸入和輸出格式化操作詳解

    這篇文章主要介紹了Python中的輸入與輸出操作,包括使用input()函數(shù)進(jìn)行輸入、數(shù)據(jù)類型轉(zhuǎn)換、異常處理,以及使用print()函數(shù)進(jìn)行輸出、格式化輸出方法(如%格式化、str.format()和f-string),需要的朋友可以參考下
    2025-02-02
  • python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼分享

    python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼分享

    在本篇文章里小編給大家整理的是關(guān)于python將數(shù)據(jù)插入數(shù)據(jù)庫(kù)的代碼內(nèi)容,有興趣的朋友們可以參考下。
    2020-08-08

最新評(píng)論

八宿县| 中牟县| 栾城县| 墨脱县| 营山县| 商水县| 台州市| 皮山县| 明水县| 阆中市| 宜宾县| 石屏县| 新乡县| 成都市| 沅陵县| 鄂州市| 永清县| 若尔盖县| 四会市| 比如县| 宁蒗| 社旗县| 石城县| 长垣县| 兰西县| 府谷县| 龙山县| 津市市| 曲周县| 永德县| 靖安县| 视频| 林州市| 和硕县| 张家界市| 林口县| 怀柔区| 蒙山县| 常州市| 内乡县| 苗栗县|