pytorch 關於權重(初始化 固定)

2021-10-04 21:11:35 字數 888 閱讀 7332

emb那種可以直接from_pretrained

利用requires_grad=false,這樣只是不更新,但是還是會計算並占用視訊記憶體

class net(nn.module):

def __init__(self):

super(net, self).__init__()

self.conv1 = nn.conv2d(1, 6, 5)

self.conv2 = nn.conv2d(6, 16, 5)

for p in self.parameters():

p.requires_grad=false

self.fc1 = nn.linear(16 * 5 * 5, 120)

self.fc2 = nn.linear(120, 84)

self.fc3 = nn.linear(84, 10)

然後在optimizer裡需要過濾

optimizer.sgd(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3)
或者可以def不同的func,return需要更新的param,然後在優化器裡用,這樣可以讓網路不同的時刻(epoch),可以用不同的優化器進行更新引數。比如剛開始更新全部引數,訓練後期就只更新上層引數

#在model的class裡

def xxoptim(self, lr):

return [,]

#在優化器裡

xxoptimizer = torch.optim.sgd(model.xxoptim(lr=0.001), args.momentum, args.weight_decay)

2016 3 25 初始化權重

初始化權重 在網路的初始時刻,如果神經元的權重都是隨便初始化的,那麼啟用的下一層的神經元的均值尾 0,但是方差就是巨大的,這會導致 neural saturation 的情況,所以在初始化的時候就根據神經元的聯入的樹木來進行計算,使得最後基本上 w的求和之後的結果均值為 0,方差為1.所以初始化權重...

關於初始化

1 成員初始化時 對於區域性變數 必須制定初始值如果未初始化變數就使用 會報錯 提示變數未被初始化 2 如果類的資料成員是基本型別 系統會給沒有指定初始化的變數指定預設值 比如int為0 double為null string為null 如果是引用型別 系統 會給乙個初始值null 此時如果呼叫類的方...

對於權重初始化的研究

權重初始化對於神經網路來說十分重要,乙個好的權重初始化的方法能夠幫助神經網路更快的找到最優解決方案。之前在tensorflow的基本使用 1 建立簡單神經網路這篇筆記中提到使用截斷正態分佈的方法隨機初始化權重,在學習了weight initialization這門課後有了更直觀的理解。按照一般思路和...