레이어 초기화와 전이 학습

PyTorch로 배우는 딥러닝 입문

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

레이어 초기화

import torch.nn as nn

layer = nn.Linear(64, 128)
print(layer.weight.min(), layer.weight.max())
(tensor(-0.1250, grad_fn=<MinBackward1>), tensor(0.1250, grad_fn=<MaxBackward1>))

$$

  • 레이어 가중치는 작은 값으로 초기화됩니다
  • 입력과 가중치를 작게 유지하면 출력이 안정적입니다
PyTorch로 배우는 딥러닝 입문

레이어 초기화

import torch.nn as nn

layer = nn.Linear(64, 128)
nn.init.uniform_(layer.weight)

print(layer.weight.min(), layer.weight.max())
(tensor(0.0002, grad_fn=<MinBackward1>), tensor(1.0000, grad_fn=<MaxBackward1>))
PyTorch로 배우는 딥러닝 입문

전이 학습

  • 첫 번째 과제에서 학습한 모델을 유사한 두 번째 과제에 재사용
    • 미국 데이터 과학자 급여로 모델 학습
    • 그 가중치로 유럽 급여에 학습 전이

$$

import torch

layer = nn.Linear(64, 128)
torch.save(layer, 'layer.pth')

new_layer = torch.load('layer.pth')
PyTorch로 배우는 딥러닝 입문

미세 조정(Fine-tuning)

  • 전이 학습의 한 형태
    • 더 작은 학습률
    • 네트워크 일부만 학습(일부는 동결)
    • 경험칙: 초기 레이어는 동결, 출력층에 가까운 레이어는 미세 조정
import torch.nn as nn

model = nn.Sequential(nn.Linear(64, 128),
                      nn.Linear(128, 256))

for name, param in model.named_parameters():
    if name == '0.weight':
        param.requires_grad = False
PyTorch로 배우는 딥러닝 입문

연습해 봅시다!

PyTorch로 배우는 딥러닝 입문

Preparing Video For Download...