【pytorch知識】Module.children() vs Module.modules()
阿新 • • 發佈:2021-08-04
Module.children()和Module.modules()的區別
children()與modules()都是返回網路模型裡的組成模組,但是children()返回的是最外層的模組,順序顯示; modules()返回的是所有的模組,包括不同級別的子模組,詳細順序的層層顯示在1個容器sequential中; 然後接著再是如children()顯示最外層的模組,子模組有容器的話,還會進一步顯示容器中中的模組。 參考官方論壇的回答:Module.children() vs Module.modules() 以下舉例瞭解具體的差別: 使用children()返回了3個模組:linear,relu,sequential,並沒有進入到第二層的Sequential()容器中去如第一層一樣再具體單獨顯示容器中的兩個模組。m = nn.Sequential(nn.Linear(2,2), nn.ReLU(), nn.Sequential(nn.Sigmoid(), nn.ReLU())) m.children() Output: [Linear (2 -> 2),
ReLU (),
Sequential
( (0): Sigmoid () (1): ReLU ()
)
]
m.modules()遞迴地進入網路中的所有模組,並返回所有模組;一共包括6個模組:整體的一個sequential,裡面的一個linear,一個relu,一個子sequential,以及sequential裡的sigmoid和relu。
m.modules() Output: [Sequential關注公眾號【龍一的程式設計life】,一起學習吧!
( (0): Linear (2 -> 2) (1): ReLU () (2): Sequential ( (0): Sigmoid () (1): ReLU () ) ),
Linear (2 -> 2),
ReLU (),
Sequential
( (0): Sigmoid () (1): ReLU () ),
Sigmoid (),
ReLU ()
]