『PyTorch』第十三彈_torch.nn.init參數初始化


初始化參數的方法

nn.Module模塊對於參數進行了內置的較為合理的初始化方式,當我們使用nn.Parameter時,初始化就很重要,而且我們也可以指定代替內置初始化的方式對nn.Module模塊進行補充。

除了之前的.data進行賦值,或者.data.初始化方式外,我們可以使用torch.nn.init進行初始化參數。

from torch.nn import init

linear = nn.Linear(3, 4)

t.manual_seed(1)

init.xavier_normal(linear.weight)
print(linear.weight.data)

import math

std = math.sqrt(2)/math.sqrt(7.)
linear.weight.data.normal_(0, std)

 

不同層類型定制化初始化

除此之外,我們可以使用如下的方式對不同的類型的層(卷積層、全連接層……)進行不同的賦值方式,

for name, params in net.named_parameters():
    if name.find('linear') != -1:
        params[0]  # weights
        params[1]  # bias
    elif name.find('conv') != -1:
        pass
    elif name.find('norm') != -1:
        pass

這里使用了str.find()方法,如下:

'asda'.find('a')
Out[3]:
0

即返回第一個find參數在原str中的位置索引。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM