코드 안에 네트워크가 2개가 있고 이 2개의 네트워크를 각각 다른 learning rate로 학습하고 싶을 때 사용하는 코드다.
아래와 같이 개별로 learning rate를 설정하면 net2 안에 있는 파라미터는 0.001로 학습되고
net1 안에 있는 파라미터는 0.01로 학습된다.
optimizer = optim.Adam([
{'params': func.net1.parameters()},
{'params': func.net2.parameters(), 'lr': 0.001}
], lr=0.01)
optimizer.param_groups[0]['capturable'] = True
print(optimizer.param_groups[0]['lr'])
print(optimizer.param_groups[1]['lr'])
그리고 learning rate가 잘 설정되었는지 확인하기 위해 위와 같은 코드로 출력해볼 수 있다.
그 외에도 weight와 bias는 따로 학습하고 싶다면 이와 같이 설정할 수 있다.
optimizer = optim.Adam([
{'params': net.layer.weight},
{'params': net.layer.bias, 'lr': 0.01}
], lr=0.1, weight_decay=0.0001)
이 코드는 bias와 weight의 학습률을 따로 설정한 경우이다.
'연구 Research > 인공지능 Artificial Intelligent' 카테고리의 다른 글
[JAX] JAX vmap에 대한 설명 (0) | 2023.03.17 |
---|---|
[AI] Sampyl에 대한 간단한 설명 (0) | 2023.03.05 |
[JAX] Windows에서도 JAX 사용하기 (0) | 2023.02.24 |
[에러기록] assertionerror: if capturable=false, state_steps should not be cuda tensors. (0) | 2023.02.23 |
[인공지능] Windows 기준 CUDA & cuDNN 최신 버전 설치 (CUDA 11.6 이상) (0) | 2023.02.07 |