1. 將需要固定,不參與訓練層引數的requires_grad屬性設為false:
# 在nn.modele子類內固定features層引數
for p in self.features.parameters():
p.requires_grad=false
2. 將參與訓練的層引數傳入optimizer:
param_to_optim =
for param in self.model.parameters():
if param.requires_grad == false:
continue
optimizer = torch.optim.sgd(param_to_optim, lr=0.001, momentum=0.9, weight_decay=1e-4)
或者:
optimizer = torch.optim.sgd(filter(lambda p: p.requires_grad, model.parameters()), lr=0.001, momentum=0.9, weight_decay=1e-4)
def adjust_learning_rate(args, optimizer, epoch, gamma=0.1):
# 每訓練args.step_size個epochs,學習率衰減到gamma倍
lr = args.lr * (gamma ** (epoch // args.step_size))
for param_group in optimizer.param_groups:
param_group['lr'] = lr
# 乙個optimizer內多組引數,可以為不同組引數設定不同的學習率
optimizer = optim.sgd([,,
,,,,
], momentum=0.9, weight_decay=5e-4)
# 定義多個optimizer,訓練網路的不同模組
raw_optimizer = torch.optim.sgd(raw_parameters, lr=lr, momentum=0.9, weight_decay=wd)
concat_optimizer = torch.optim.sgd(concat_parameters, lr=lr, momentum=0.9, weight_decay=wd)
part_optimizer = torch.optim.sgd(part_parameters, lr=lr, momentum=0.9, weight_decay=wd)
partcls_optimizer = torch.optim.sgd(partcls_parameters, lr=lr, momentum=0.9, weight_decay=wd)
待續。。。 bpython使用技巧 Python 小技巧
python 隱秘的角落 1.args 和 kwargs 的使用 此處一定要注意 python 中有預設值得引數一定一定要放在沒有預設值的後邊。args 是以元組型別傳入 kwargs 是字典型別傳入 def parameter learn parameter 1,parameter 2 none,...
VI使用小技巧
1 替換某一字串 s old word new word g 在整個檔案中將old word替換為new word 2 不進入vi編輯器將檔案中的某一字串替換掉 sed s 111 aaa g 1.txt 2.txt 將1.txt中所有的111替換為aaa,修改後的檔案寫入2.txt sed s 1...
IDE使用小技巧
vc 共享樂園 1 如何檢測程式中的括號是否匹配。把游標移動到需要檢測的括號 如大括號 方括號 圓括號 和尖括號 前面,鍵入快捷鍵 ctrl 如果括號匹配正確,游標就跳到匹配的括號處 否則游標不移動,並且機箱喇叭還會發出一聲警告聲。2 如何檢視乙個巨集 或變數 函式 的巨集定義。選中此巨集,單擊滑鼠...