pytorch 之 torch.squeeze() 和 torch.unsqueeze()用法

第一塊:

squeeze(),主要是對(duì)數(shù)據(jù)的維度進(jìn)行壓縮,去掉元素?cái)?shù)為1的那個(gè)維度,使用方式:a.squeeze(N) or torch.squeeze(a,N) ,去掉a的第N維度,以此來(lái)實(shí)現(xiàn)數(shù)據(jù)a的維度壓縮;

unsqueeze()與squeeze()函數(shù)功能相反,其功能是對(duì)數(shù)據(jù)維度進(jìn)行擴(kuò)充,使用方式:a.unsqueeze(N) or torch.unsqueeze(a,N),在數(shù)據(jù)a的第N維度上增加一個(gè)維數(shù)為1的維度,以此實(shí)現(xiàn)對(duì)數(shù)據(jù)的擴(kuò)充,方便后續(xù)模型訓(xùn)練喂入模型的數(shù)據(jù)的維度和模型接收數(shù)據(jù)的維度是匹配的。


第二塊:

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") model.to(device) # 選擇第0個(gè)cuda

model.to(device)

以上兩行代碼放在讀取數(shù)據(jù)之前。

mytensor = my_tensor.to(device) #將所有最開始讀取數(shù)據(jù)時(shí)的tensor變量copy一份到device所指定的GPU上,之后運(yùn)算都在指定的GPU上進(jìn)行。這些tensor多是最開始讀取數(shù)據(jù)時(shí)的變量,后面其衍生出的新變量也會(huì)在已指定的GPU上運(yùn)行計(jì)算。



第三塊:

Tensor & Numpy 都是矩陣,區(qū)別在與Tensor可以在GPU上運(yùn)行,Numpy只能在CPU上運(yùn)行。(天吶,我現(xiàn)在才知道!)Tensor與Numpy互相轉(zhuǎn)化很方便,類型也比較兼容,Tensor可以直接通過print顯示數(shù)據(jù)類型,而Numpy不可以。


第四塊:

x.aadd(y) 實(shí)現(xiàn)x與y Tensor的相加,不改變x,返回一個(gè)新的Tensor

x.add_(y)? 實(shí)現(xiàn)x與y Tensor的相加,會(huì)修改x的維數(shù)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容