[python] 파이썬 PyTorch에서 모델 가중치 초기화를 설정하는 방법은?

PyTorch에서는 모델의 가중치 초기화를 설정하는 다양한 방법을 제공합니다. 가중치 초기화는 모델의 성능과 수렴 속도에 영향을 미치므로 올바른 초기화 방법을 선택하는 것이 중요합니다.

  1. 기본 가중치 초기화:

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)
  1. 직접 가중치 초기화:

모델의 특정 레이어에 대해 직접 가중치 초기화를 수행할 수도 있습니다. 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)
  1. 사전 정의된 초기화 방법:

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 공식 문서 - 가중치 초기화