PyTorch named parameters 메서드

IT 위키

named_parameters()는 PyTorch에서 제공하는 메서드로, 신경망 모델의 모든 학습 가능한 파라미터(parameter)에 대해 해당 파라미터의 이름(name)과 파라미터 객체(torch.nn.Parameter)를 함께 반환한다. 이 메서드는 torch.nn.Module을 상속받은 모든 모델에서 사용 가능하며, 레이어별 파라미터에 이름을 기준으로 접근하거나 필터링할 수 있도록 도와준다.

개요[편집 | 원본 편집]

PyTorch의 모든 모델은 torch.nn.Module을 기반으로 구성되며, 모델 내부에 포함된 하위 모듈과 파라미터들은 자동으로 등록된다. named_parameters() 메서드는 다음과 같은 형태로 호출된다:

for name, param in model.named_parameters():
    print(name, param.shape)

이때 반환되는 name은 문자열(str) 형태의 파라미터 이름이고, param은 torch.nn.Parameter 객체이다.

파라미터 등록 조건[편집 | 원본 편집]

  • Module 클래스의 속성으로 직접 할당된 torch.nn.Parameter 객체만 named_parameters()의 결과에 포함된다.
  • 일반 Tensor는 등록되지 않으며, torch.nn.Parameter로 래핑되어야 한다.
  • 리스트나 딕셔너리 등의 컨테이너 안에 파라미터를 포함할 경우, nn.ModuleList 또는 nn.ModuleDict 등의 구조를 사용해야 탐색 가능하다.

주요 인자[편집 | 원본 편집]

named_parameters()는 다음과 같은 인자를 받을 수 있다:

  • prefix: 파라미터 이름 앞에 붙일 문자열. 기본값은 빈 문자열이다.
  • recurse: 하위 모듈까지 재귀적으로 탐색할지 여부. 기본값은 True이다.
  • remove_duplicate: 공유된 파라미터의 중복 반환 여부를 결정한다. 기본값은 True이다.

활용 예[편집 | 원본 편집]

하위 모듈 필터링[편집 | 원본 편집]

for name, param in model.named_parameters():
    if "layer1" in name:
        print(name, param.size())

이 방식으로 특정 레이어의 파라미터만 추출할 수 있다.

서로 다른 학습률 적용[편집 | 원본 편집]

optimizer = torch.optim.SGD([
    {"params": [p for n, p in model.named_parameters() if "layer1" in n], "lr": 0.001},
    {"params": [p for n, p in model.named_parameters() if "layer2" in n], "lr": 0.01},
])

named_parameters()를 통해 얻은 이름 정보를 바탕으로 optimizer 설정을 다양화할 수 있다.

주의 사항[편집 | 원본 편집]

  • 일부 파라미터가 named_parameters()에 포함되지 않는 경우, Parameter로 등록되어 있는지 확인해야 한다.
  • 파라미터를 리스트나 딕셔너리에 직접 넣을 경우, 모델이 그것을 추적하지 못할 수 있다.
  • 내부적으로는 모듈의 ._parameters 딕셔너리를 사용하지만, 이는 내부 구현이므로 직접 접근은 권장되지 않는다.

같이 보기[편집 | 원본 편집]

참고 문헌[편집 | 원본 편집]