欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例

 更新時(shí)間:2022年03月16日 09:44:31   作者:易烊千蟈  
這篇文章主要介紹了PyTorch中的squeeze()和unsqueeze()解析與應(yīng)用案例,文章內(nèi)容介紹詳細(xì),需要的小伙伴可以參考一下,希望對(duì)你有所幫助

附上官網(wǎng)地址:

https://pytorch.org/docs/stable/index.html

1.torch.squeeze

squeeze的用法主要就是對(duì)數(shù)據(jù)的維度進(jìn)行壓縮或者解壓。

先看torch.squeeze() 這個(gè)函數(shù)主要對(duì)數(shù)據(jù)的維度進(jìn)行壓縮,去掉維數(shù)為1的的維度,比如是一行或者一列這種,一個(gè)一行三列(1,3)的數(shù)去掉第一個(gè)維數(shù)為一的維度之后就變成(3)行。squeeze(a)就是將a中所有為1的維度刪掉。不為1的維度沒(méi)有影響。a.squeeze(N) 就是去掉a中指定的維數(shù)為一的維度。還有一種形式就是b=torch.squeeze(a,N) a中去掉指定的定的維數(shù)為一的維度。

換言之:

表示若第arg維的維度值為1,則去掉該維度,否則tensor不變。(即若tensor.shape()[arg] == 1,則去掉該維度)

例如:

一個(gè)維度為2x1x2x1x2的tensor,不用去想它長(zhǎng)什么樣兒,squeeze(0)就是不變,squeeze(1)就是變成2x2x1x2。(0是從最左邊的維度算起的)

>>> x = torch.zeros(2, 1, 2, 1, 2)
>>> x.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x)
>>> y.size()
torch.Size([2, 2, 2])
>>> y = torch.squeeze(x, 0)
>>> y.size()
torch.Size([2, 1, 2, 1, 2])
>>> y = torch.squeeze(x, 1)
>>> y.size()
torch.Size([2, 2, 1, 2])

2.torch.unsqueeze

torch.unsqueeze()這個(gè)函數(shù)主要是對(duì)數(shù)據(jù)維度進(jìn)行擴(kuò)充。給指定位置加上維數(shù)為一的維度,比如原本有個(gè)三行的數(shù)據(jù)(3),在0的位置加了一維就變成一行三列(1,3)。a.squeeze(N) 就是在a中指定位置N加上一個(gè)維數(shù)為1的維度。還有一種形式就是b=torch.squeeze(a,N) a就是在a中指定位置N加上一個(gè)維數(shù)為1的維度。

>>> x = torch.tensor([1, 2, 3, 4])
>>> torch.unsqueeze(x, 0)
tensor([[ 1, ?2, ?3, ?4]])
>>> torch.unsqueeze(x, 1)
tensor([[ 1],
? ? ? ? [ 2],
? ? ? ? [ 3],
? ? ? ? [ 4]])

3.例子

給一個(gè)使用上述兩個(gè)函數(shù),并進(jìn)行一次卷積的例子:

from torchvision.transforms import ?ToTensor
import torch as t
from torch import nnimport cv2
import numpy as np
import cv2
to_tensor = ToTensor()
# 加載圖像
lena = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)
cv2.imshow('lena', lena)
# input = to_tensor(lena) 將ndarray轉(zhuǎn)換為tensor,自動(dòng)將[0,255]歸一化至[0,1]。
input = to_tensor(lena).unsqueeze(0)
# 初始化卷積參數(shù)
kernel = t.ones(1, 1, 3, 3)/-9
kernel[:, :, 1, 1] = 1
conv = nn.Conv2d(1, 1, 3, 1, padding=1, bias=False)
conv.weight.data = kernel.view(1, 1, 3, 3)
# 輸出
out = conv(input)
out = out.squeeze(0)
print(out.shape)
out = out.unsqueeze(3)
print(out.shape)
out = out.squeeze(0)
print(out.shape)
out = out.detach().numpy()# 縮放到0~最大值
cv2.normalize(out, out, 1.0, 0, cv2.NORM_INF)
cv2.imshow("lena-result", out)
cv2.waitKey()

結(jié)果圖如下:

到此這篇關(guān)于PyTorch中的squeeze()unsqueeze()解析與應(yīng)用案例的文章就介紹到這了,更多相關(guān)squeeze()和unsqueeze()解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

references:
[1] 陳云.深度學(xué)習(xí)框架之PyTorch入門與實(shí)踐.北京:電子工業(yè)出版社,2018.

相關(guān)文章

  • Python新手學(xué)習(xí)raise用法

    Python新手學(xué)習(xí)raise用法

    在本篇文章里小編給大家分享的是一篇關(guān)于Python新手學(xué)習(xí)raise用法的相關(guān)知識(shí)點(diǎn),需要的朋友們可以參考下。
    2020-06-06
  • 一文詳解Python中l(wèi)ogging模塊的用法

    一文詳解Python中l(wèi)ogging模塊的用法

    logging是Python標(biāo)準(zhǔn)庫(kù)中記錄常用的記錄日志庫(kù),主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等。本文主要來(lái)和大家聊聊它的具體用法,希望對(duì)大家有所幫助
    2023-02-02
  • Python音樂(lè)爬蟲(chóng)完美繞過(guò)反爬

    Python音樂(lè)爬蟲(chóng)完美繞過(guò)反爬

    這篇文章主要介紹了Python音樂(lè)爬蟲(chóng)完美繞過(guò)反爬的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Python使用re模塊實(shí)現(xiàn)okenizer(表達(dá)式分詞器)

    Python使用re模塊實(shí)現(xiàn)okenizer(表達(dá)式分詞器)

    這篇文章主要介紹了Python使用re模塊實(shí)現(xiàn)okenizer,我們這里講解用正則表達(dá)式構(gòu)建簡(jiǎn)單的表達(dá)式分詞器(tokenizer),它能夠?qū)⒈磉_(dá)式字符串從左到右解析為標(biāo)記(tokens)流,需要的朋友可以參考下
    2022-04-04
  • python-Web-flask-視圖內(nèi)容和模板知識(shí)點(diǎn)西寧街

    python-Web-flask-視圖內(nèi)容和模板知識(shí)點(diǎn)西寧街

    在本篇文章里小編給大家分享了關(guān)于python-Web-flask-視圖內(nèi)容和模板的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們參考學(xué)習(xí)下。
    2019-08-08
  • termux中matplotlib無(wú)法顯示中文問(wèn)題的解決方法

    termux中matplotlib無(wú)法顯示中文問(wèn)題的解決方法

    這篇文章主要介紹了termux中matplotlib無(wú)法顯示中文問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Cython 三分鐘入門教程

    Cython 三分鐘入門教程

    根據(jù)一些我收到的反饋,大家似乎有點(diǎn)混淆——Cython是用來(lái)生成 C 擴(kuò)展到而不是獨(dú)立的程序的。所有的加速都是針對(duì)一個(gè)已經(jīng)存在的 Python 應(yīng)用的一個(gè)函數(shù)進(jìn)行的。
    2009-09-09
  • 利用tkinter實(shí)現(xiàn)下拉框聯(lián)動(dòng)

    利用tkinter實(shí)現(xiàn)下拉框聯(lián)動(dòng)

    這篇文章主要介紹了利用tkinter實(shí)現(xiàn)下拉框聯(lián)動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 11個(gè)Python的循環(huán)技巧分享

    11個(gè)Python的循環(huán)技巧分享

    當(dāng)我們處理數(shù)據(jù)時(shí),有時(shí)候需要?jiǎng)?chuàng)建多個(gè)列表以存儲(chǔ)不同類型或不同條件下的數(shù)據(jù),在Python中,我們可以利用循環(huán)來(lái)快速、高效地創(chuàng)建這些列表,本文將介紹如何使用循環(huán)在Python中創(chuàng)建多個(gè)列表,需要的可以參考下
    2024-04-04
  • Python使用jpype模塊調(diào)用jar包過(guò)程解析

    Python使用jpype模塊調(diào)用jar包過(guò)程解析

    這篇文章主要介紹了Python使用jpype模塊調(diào)用jar包過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論