淺談pytorch中的nn.Sequential(*net[3: 5])是啥意思
看到代碼里面有這個(gè)
1 class ResNeXt101(nn.Module): 2 def __init__(self): 3 super(ResNeXt101, self).__init__() 4 net = resnext101() # print(os.getcwd(), net) 5 net = list(net.children()) # net.children()得到resneXt 的表層網(wǎng)絡(luò) # for i, value in enumerate(net): # print(i, value) 6 self.layer0 = nn.Sequential(net[:3]) # 將前三層打包0, 1, 2兩層 print(self.layer0) 7 self.layer1 = nn.Sequential(*net[3: 5]) # 將3, 4兩層打包 8 self.layer2 = net[5] 9 self.layer3 = net[6]
可以看到代碼中的第六行(序號(hào)自己去掉,我打上去的) self.layer0 = nn.Sequential(net[:3])
和
第七行self.layer1 = nn.Sequential(*net[3: 5])
有一個(gè)nn.Sequential(net[:3])
和nn.Sequential(*net[3: 5])
今天不講nn.Sequential()
用法,意義,作用因?yàn)槲乙膊徽γ靼?。驚天就說(shuō)*net[3: 5]
這個(gè)東西為啥要帶“ * ”
當(dāng)代碼中不帶*
的時(shí)候,運(yùn)行會(huì)出現(xiàn)以下問(wèn)題
意思就是列表不是子類,就是說(shuō)參數(shù)不對(duì)
net = list(net.children())
這一行代碼是將模型的每一層取出來(lái)構(gòu)建一個(gè)列表,自己試著打印就可以。大概的輸出就是[conv(),BatchNorm2d(), ReLU,MaxPool2d]
等等
總共是是個(gè)元素,和一般的列表不太一樣。
當(dāng)我們?nèi)?code>net[:3]的時(shí)候,傳進(jìn)去的參數(shù)是一個(gè)列表,但是我們用*net[:3]
的時(shí)候傳進(jìn)去的是單個(gè)元素
list1 = ["conv", ("relu", "maxing"), ("relu", "maxing", 3), 3] list2 = [list1[:1]] list3 = [*list1[:1]] print("list2:{}, *list1[:2]:{}".format(list1[:1], *list1[:1]))
結(jié)果不帶✳的是列表,帶✳的是元素,所以nn.Sequential(*net[3: 5])
中的*net[3: 5]
就是給nn.Sequential()
這個(gè)容器中傳入多個(gè)層。
到此這篇關(guān)于pytorch中的nn.Sequential(*net[3: 5])是啥意思的文章就介紹到這了,更多相關(guān)pytorch nn.Sequential(*net[3: 5])內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)希爾伯特變換(Hilbert transform)的示例代碼
希爾伯特變換(Hilbert transform)是一個(gè)對(duì)函數(shù)產(chǎn)生定義域相同的函數(shù)的線性算子,而且希爾伯特變換在信號(hào)處理中很重要,所以本文和大家分享了Python實(shí)現(xiàn)希爾伯特變換的代碼,需要的可以參考一下2023-04-04python中以函數(shù)作為參數(shù)(回調(diào)函數(shù))的實(shí)現(xiàn)方法
這篇文章主要介紹了python中以函數(shù)作為參數(shù)(回調(diào)函數(shù))的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01Python異步與定時(shí)任務(wù)提高程序并發(fā)性和定時(shí)執(zhí)行效率
Python異步與定時(shí)任務(wù)是Python編程中常用的兩種技術(shù),異步任務(wù)可用于高效處理I/O密集型任務(wù),提高程序并發(fā)性;定時(shí)任務(wù)可用于定時(shí)執(zhí)行計(jì)劃任務(wù),提高程序的執(zhí)行效率。這兩種技術(shù)的應(yīng)用有助于提升Python程序的性能和效率2023-05-05Python自動(dòng)化辦公之讀取Excel數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何通過(guò)Python實(shí)現(xiàn)Excel數(shù)據(jù)的讀取,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下2022-05-05tensorflow之如何使用GPU而不是CPU問(wèn)題
這篇文章主要介紹了tensorflow之如何使用GPU而不是CPU問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05