[python] 파이썬 PyTorch에서 가중치 초기화를 설정하는 방법은?
파이썬 PyTorch에서 가중치 초기화를 설정하는 방법은 여러 가지가 있습니다.
-
기본 초기화: PyTorch는 기본적으로 제공하는 초기화 방법을 사용하여 가중치를 초기화합니다. 예를 들어,
torch.nn.Linear
를 사용하여 선형 레이어를 만든다고 가정하면, 해당 레이어의 가중치는 기본 초기화 방법을 사용하여 초기화됩니다. -
사용자 정의 초기화: 사용자는 직접 가중치 초기화 방법을 정의할 수도 있습니다. 예를 들어, 모든 가중치를 0으로 초기화하고 싶다면 다음과 같이 할 수 있습니다:
import torch import torch.nn as nn def weights_init(m): if isinstance(m, nn.Linear): # 원하는 레이어 타입을 지정합니다. nn.init.constant_(m.weight, 0.0) # 가중치를 0으로 초기화합니다. model = nn.Sequential( nn.Linear(10, 20), nn.ReLU(), nn.Linear(20, 30) ) model.apply(weights_init) # 사용자 정의 초기화 함수를 모델에 적용합니다.
이렇게 하면 모든
nn.Linear
레이어의 가중치가 0으로 초기화됩니다. -
사전 정의된 초기화 방법: PyTorch에는 다양한 사전 정의된 초기화 방법이 있습니다. 예를 들어, Xavier 초기화, He 초기화 등이 있습니다. 이러한 초기화 방법은
torch.nn.init
모듈에서 제공됩니다. 사용하려는 초기화 방법에 따라서 해당 함수를 사용하여 가중치를 초기화할 수 있습니다. 예를 들어, Xavier 방법을 사용하여 가중치를 초기화하려면 다음과 같이 할 수 있습니다:import torch import torch.nn as nn model = nn.Sequential( nn.Linear(10, 20), nn.ReLU(), nn.Linear(20, 30) ) nn.init.xavier_uniform_(model[0].weight) # 첫번째 레이어의 가중치를 Xavier 방법으로 초기화합니다.
이렇게 하면 첫 번째
nn.Linear
레이어의 가중치가 Xavier 초기화 방법을 사용하여 초기화됩니다.
참고 자료: