ModuleList是將子Module作為一個List來保存的,可以通過下標(biāo)進行訪問业舍,類似于Python中的List抖拦,但是該類需要手動實現(xiàn)forward函數(shù)。
Sequential內(nèi)部自動實現(xiàn)了forward函數(shù)舷暮,可以在forward函數(shù)里直接調(diào)用定義的Sequentila結(jié)構(gòu)體态罪。
functional可以直接使用靜態(tài)的參數(shù),調(diào)用不用學(xué)習(xí)的參數(shù)下面,直接輸出得到結(jié)果复颈。結(jié)構(gòu)類似于functional(input,model.weight,model.bias).? ?其中model是已經(jīng)學(xué)習(xí)完畢的模型。不具備可學(xué)習(xí)的參數(shù)的函數(shù)沥割,可以直接采用functional里的使用耗啦,比如functional.pool,functional.relu,因此也可以不用放在構(gòu)造函數(shù)中,直接在forward里使用即可机杜。
nn.Module中的權(quán)重和偏移等參數(shù)都采用了合理的初始化帜讲,合理的初始化能夠保證網(wǎng)絡(luò)有效的收斂,錯誤的初始化會使網(wǎng)絡(luò)崩潰椒拗。t.Tensor中返回的是內(nèi)存中的隨機數(shù)似将,有可能會造成溢出或者梯度消失(梯度消失一般都是因為數(shù)據(jù)問題获黔,要么是計算出的數(shù)超出了當(dāng)前分配的字節(jié)大小,要么是錯誤使用了公式在验,比如除數(shù)出現(xiàn)0的情況玷氏,log上出現(xiàn)-1的情況)。因此sometimes需要自己進行參數(shù)自定義初始化腋舌。例如model.weigt.data.normal_(0,std).對模型model里的權(quán)重數(shù)據(jù)進行初始化预茄,范圍在0到std之間。
作者還在繼續(xù)學(xué)習(xí)中侦厚,這是學(xué)習(xí)了3個模塊的總結(jié),有不對之處還請指出拙徽,共同進步刨沦。