nn.Sequential 、 nn.ModuleList 、 nn.ModuleDict 的使用 與 區(qū)別
1、nn.Sequential
、 nn.ModuleList
、 nn.ModuleDict
類都繼承自 Module
類。

2、nn.Sequential、nn.ModuleList
和 nn.ModuleDict
語(yǔ)法

3、Sequential
、ModuleDict
、 ModuleList
的區(qū)別
? 1)
ModuleList
僅僅是一個(gè)儲(chǔ)存各種模塊的列表,這些模塊之間沒(méi)有聯(lián)系也沒(méi)有順序(所以不用保證相鄰層的輸入輸出維度匹配),而且沒(méi)有實(shí)現(xiàn) forward
功能需要自己實(shí)現(xiàn)
? 2)和 ModuleList
一樣, ModuleDict
實(shí)例僅僅是存放了一些模塊的字典,并沒(méi)有定義 forward
函數(shù)需要自己定義
? 3)而 Sequential
內(nèi)的模塊需要按照順序排列,要保證相鄰層的輸入輸出大小相匹配,內(nèi)部 forward
功能已經(jīng)實(shí)現(xiàn),所以,直接如下寫模型,是可以直接調(diào)用的,不再需要寫forward,sequential 內(nèi)部已經(jīng)有 forward
為 nn.ModuleList 寫 forward 函數(shù)
為 nn.ModuleDict 寫 forward 函數(shù)
將 nn.ModuleList 轉(zhuǎn)換成 nn.Sequential
將 nn.ModuleDict 轉(zhuǎn)換成 nn.Sequential

4、ModuleDict
、 ModuleList
的區(qū)別
? 1)ModuleDict
可以給每個(gè)層定義名字,ModuleList
不會(huì)
? 2)ModuleList
可以通過(guò)索引讀取,并且使用 append 添加元素
? 3)ModuleDict
可以通過(guò) key 讀取,并且可以像 字典一樣添加元素

5、nn.ModuleList
?、?nn.ModuleDict
?與 Python ?list、
Dict
?的區(qū)別
加入到?ModuleList
?、ModuleDict
??里面的所有模塊的參數(shù)會(huì)被自動(dòng)添加到整個(gè)網(wǎng)絡(luò)中。