Pytorch中的squeeze()和unsqueeze()函式
在numpy庫中,經常會出現“秩為1的一維陣列”(come from 吳恩達的深度學習,目前還沒有搞清楚numpy中如此設計的意圖)。比如:
注意這裡的a的shape是[3] ,既不是 [1,3] 也不是 [3,1]。這就說明它既不是行向量也不是列向量,只是一個數組。
但是我們可以用squeeze()和unsqueeze()對其進行操作,比如:
在對這兩個函式講解之前,我們先統一一下定義:
In : x.shape Out: torch.Size( [ a , b , c ] )
這裡我們說a是第一個維度(表示第一個維度的數量是a),b是第二個維度(表示第一個維度的數量是b),c是第三個維度(表示第三個維度的數量是c)
簡而言之,unsqueeze(arg)是增添第arg個維度為1,以插入的形式填充。比如:
相反,squeeze(arg)是刪除第arg個維度(如果當前維度不為1,則不會進行刪除),比如:
相關推薦
Pytorch中的squeeze()和unsqueeze()函式
在numpy庫中,經常會出現“秩為1的一維陣列”(come from 吳恩達的深度學習,目前還沒有搞清楚numpy中如此設計的意圖)。比如: 注意這裡的a的shape是[3] ,既不是 [1,3] 也不是 [3,1]。這就說明它既不是行向
pytorch的pack和unpack函式
pack unpack 匯入 from torch.nn.utils.rnn import pack_padded_sequence as pack from torch.nn.utils.rnn import pad_packed_sequence as unpack 使
解釋python中join()和split()函式
join能讓我們將指定字元新增至字串中 a=','.join('123456') print(a) print(type(a)) #1,2,3,4,5,6 #<class 'str'> split()能讓我們用指定字元分割字串 a='1,2,3,4
pytorch中required_grad和detach的澄清
最近和別人討論,發現了自己以前的認識錯誤的地方。 程式碼中的detach和required_grad的引入是減少了計算量,required_grad=false會計算誤差,不計算wb的梯度(原因在於一個網路如果是ABC層這樣的連線方式,B不求梯度,但是A還是會獲得梯度,這就需要計算B的誤差,
c++ 中min和max 函式
包含在c++標準庫中標頭檔案中,在標頭檔案<windows.h>中定義了min,max的巨集,若在包含的同時包含<windows.h>會導致函式無法使用。 <windows.h>提供了_cpp_min等函式來代替min函式的功能。 C++11標準:
js中substring和substr函式用法
函式: stringObject.substring(start,stop) 引數: start 必需。一個非負的整數,規定要提取的子串的第一個字元在 stringObject 中的位置。 stop 可選。一個非負的整數,比要提取的子串的最後一個字元在
python中sort和sorted函式小結
L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 這樣看,sorted函式只比sort函式多一個iterable引數,其餘沒什麼不同,it
關於Numpy中transpose()和stack()函式的解析!(Numpy.transpose()和Numpy.stack())
最近在看斯坦福大學的cs231n機器學習課程,第一節的assignment1裡的KNN線性分類器中用到了這兩個函式,由於我是新手,就看不懂這兩個函式坐了什麼,其實結合那個例程,這個函式當時會覺得好像明白了它的意思,但是後來在CSDN上看了一個講stack()函式的部落格,徹底
如何在 Linux Shell 程式設計中定義和使用函式
函式是一段可複用的程式碼。我們通常把重複的程式碼放進函式中並且在不同的地方去呼叫它。庫是函式的集合。我們可以在庫中定義經常使用的函式,這樣其它指令碼便可以不再重複程式碼而使用這些函式。 呼叫函式 在 Shell 中呼叫函式和呼叫其它命令是一模一樣的。例如,如果你
numpy中logical_and和all函式
import random import numpy as np a = [] for i in range(10): ra = random.randint(0, 10) a.append(ra) print(a) a = np.array(a) mask
linux中write和read函式的阻塞試驗
剛剛接觸網路程式設計時,很容易被客戶端和伺服器之間的互動搞暈,例如各種函式的阻塞和非阻塞就讓人頭疼。例如在我的印象中 linux中用於用於對檔案描述符進行讀寫的write()函式和read()函式是非阻塞函式,但是在一次網路通訊的試驗中發現它們又是阻 塞的,後
Pytorch中的torch.cat()函式
cat是concatnate的意思:拼接,聯絡在一起。 先說cat( )的普通用法 如果我們有兩個tensor是A和B,想把他們拼接在一起,需要如下操作: C = torch.cat( (A,B),0 ) #按維數0拼接(豎著拼) C = torch.cat( (A,B),
oracle中distinct和count函式組合使用
oracle中的distinct關鍵字和count函式需要經常組合起來使用 例如,如果我們拿到一個僅有員工基本資訊的列表,我們希望得到這個公司共有多少個部門。 我們可以這樣做: select count(a.deptno) from (select distinct deptno
numpy中transpose和swapaxes函式
.reshape arr=np.arange(16).reshape((2,2,4)) arr= array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8, 9, 10, 11], [12, 13, 14, 15]]]) 以此陣列為模板討論
JavaScript中search和match函式的區別
記得以前還在學校的時候,第一次接觸 JavaScript 程式設計,算是第一種程式設計入門語言吧,總是分不清 search 和 match 這兩個函式的區別,好不容易弄明白了,到了考試的時候又混淆了,唉!氣。。。 search在一個字串物件(string object)中查
CString中find_first_of和find_last_of()函式
在網上查詢可以輕鬆查到這兩個函式的使用方法,在此只是作為自己的學習筆記。 find_first_of(char c,int start=0),其中start可以省略,預設情況下下標為0的開始,查詢第一個出現字元c的位置,返回其下標值,如果沒找到,則返回-1, find_la
Pytorch中的torch.gather函式的含義
pytorch中的gather函式 pytorch比tensorflow更加程式設計友好,所以準備用pytorch試著做最近要做的一些實驗。 立個flag開始學習pytorch,新開一個分類整理學習pytorch中的一些踩到的泥坑。 今天剛開始接觸,讀
Python中range和xrange函式的異同
range 函式說明:range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成一個序列。range示例: >>> range(5)[0,1,2,3,4]>>> ran
OpenCV中shape和resize函式的區別
有趣的OpenCV,img.shape()和cv2.resize() 在OpenCV中,img.shape[0]得到的是圖片的高,img.shape[1]得到是圖片的寬, 可是在cv2.resize(img, (dimension[0], dimension[1]))
PHP中strlen和mb_strlen函式的區別
在PHP中,strlen與mb_strlen是求字串長度的函式,但是對於一些初學者來說,如果不看手冊,也許不太清楚其中的區別 在PHP裡有兩個計算字串個數的函式 一個是 strlen,一個是mb_strlen; 先來看看手冊中的定義strlen strlen — 獲取字串