初始化參數的方法
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中的位置索引。
