torch의optim 모듈
1705 단어 Pytorch
import torchvision
import torch.optim as optim
model1 = torchvision.models.resnet18()
parmas = []
params_dict = dict(model1.named_parameters())
for k ,v in params_dict.items():
if 'conv{}.weight'.format(1,2) in k:
parmas.append({'params':v,'weight_decay':0.001})
else:
parmas.append({'params':v,'weight_decay':0.0})
optimizier = optim.SGD(parmas,lr=0.001,weight_decay=0.001)
for param_group in optimizier.param_groups:
print(param_group['weight_decay'])
여기서 나는 하나의 문제를 생각했다. 우리의 매개 변수 사전은params를 가입할 때'weight'를 설정했다.decay',하지만optimizier를 정의할 때 weightdecay, 우리가 정의한 weight를 덮어쓸지 여부decay는요, 검증을 거치면 안 돼요.그리고optim의 중국어 문서를 보러 갔습니다.
우리가 최적화기를 정의할 때 SGD를 예로 들면 우리는 반드시 파라미터를 전달해야 한다. 바보 강좌에서optimizier=optim을 정의한다.SGD(model 1.parameters), 이 모델 1.parameters ()는optim 내부에서 자동으로 사전으로 변환됩니다. 즉 {'params': 모델 1. parameters ()} 이 사전의 키는 고정적입니다.'params','lr','weightdecay','eps'등이지만 최종optimizier에는list의 형식이므로 우리는optimizier를 통과할 수 있습니다.param_그룹스 접근, 모든list의 요소는 사전입니다. 사전에는 정의된 매개 변수 등 정보가 있습니다. 우리는optimizier=optim에 있습니다.SGD(parmas, lr=0.001, weight decay=0.001)에 정의된 lr, weightdecay 우리한테만 이 param그룹s의 사전이 이 내용을 정의하지 않았을 때 효력이 발생합니다. 만약 우리처럼
{'params':v,'weight_decay':0.001}
사전에 정의하면 우리가 정의한 내용을 덮어쓰지 않고 정의되지 않은 사전만 해당 키의 초기화합니다.
학습률을 수정하면 다음과 같이 정의할 수 있습니다.
for param_group in optimizier.param_groups:
param_group['lr']= lr
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Pytorch는 cpu와 gpu의 사용을 어떻게 전환하는지 상세히 설명합니다.앞에서 말했듯이pytorch에서 서버에 있는 gpu가 점용될 때 우리는 먼저 cpu로 코드를 디버깅하고 싶을 때가 많다. 그러면 gpu와 cpu의 전환이 필요하다. 장치를 가변 매개 변수로 사용하려면argparse를...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.