[python] 파이썬 PyTorch에서 모델 가중치 초기화를 설정하는 방법은?
PyTorch에서는 모델의 가중치 초기화를 설정하는 다양한 방법을 제공합니다. 가중치 초기화는 모델의 성능과 수렴 속도에 영향을 미치므로 올바른 초기화 방법을 선택하는 것이 중요합니다.
- 기본 가중치 초기화:
PyTorch의 nn.Module 클래스를 상속한 모델에서는 기본 가중치 초기화 방법을 사용할 수 있습니다. 이 방법은 모델의 각 레이어의 가중치를 기본값으로 설정하는 것입니다. 예를 들어, nn.Linear 레이어의 가중치는 평균 0, 표준 편차 0.01인 정규 분포로 초기화됩니다.
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc = nn.Linear(100, 10) # Linear 레이어 초기화
model = MyModel()
# 가중치 초기화 확인
print(model.fc.weight)
- 직접 가중치 초기화:
모델의 특정 레이어에 대해 직접 가중치 초기화를 수행할 수도 있습니다. nn.Module의 parameters() 메서드를 사용하여 각 레이어의 가중치를 가져온 뒤, data 속성을 통해 값을 직접 설정할 수 있습니다.
import torch
import torch.nn as nn
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc = nn.Linear(100, 10)
model = MyModel()
# 가중치 직접 초기화
with torch.no_grad():
model.fc.weight.fill_(0.5)
model.fc.bias.fill_(0.1)
# 가중치 초기화 확인
print(model.fc.weight)
- 사전 정의된 초기화 방법:
PyTorch에는 가중치 초기화를 수행하는 다양한 사전 정의된 함수들이 제공됩니다. 예를 들어, torch.nn.init 모듈에서 제공되는 함수를 사용하여 각 레이어의 가중치를 초기화할 수 있습니다. 예를 들어, 정규 분포로 가중치를 초기화하려면 torch.nn.init.normal_() 함수를 사용할 수 있습니다.
import torch
import torch.nn as nn
import torch.nn.init as init
class MyModel(nn.Module):
def __init__(self):
super(MyModel, self).__init__()
self.fc = nn.Linear(100, 10)
model = MyModel()
# 가중치 초기화
init.normal_(model.fc.weight, mean=0, std=0.01)
# 가중치 초기화 확인
print(model.fc.weight)
이러한 가중치 초기화 방법을 통해 모델의 성능과 수렴 속도를 개선할 수 있습니다. 원하는 가중치 초기화 방법을 선택하여 PyTorch에서 모델의 가중치를 초기화해보세요.
참고문서: PyTorch 공식 문서 - 가중치 초기화