1. 程式人生 > 其它 >【pytorch知識】Module.children() vs Module.modules()

【pytorch知識】Module.children() vs Module.modules()

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
( (
0): Linear (2 -> 2) (1): ReLU () (2): Sequential ( (0): Sigmoid () (1): ReLU () ) ),
  Linear (
2 -> 2),
ReLU (),
Sequential
  (   (
0): Sigmoid ()   (1): ReLU ()   ),
   Sigmoid (),
   ReLU ()
]
關注公眾號【龍一的程式設計life】,一起學習吧!