Ініціалізація шарів і transfer learning

Вступ до Deep Learning з 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>))

$$

  • Ваги шару ініціалізують малими значеннями
  • Малі вхідні дані й малі ваги забезпечують стабільні виходи
Вступ до Deep Learning з 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>))
Вступ до Deep Learning з PyTorch

Transfer learning

  • Повторне використання моделі, навченої на першому завданні, для подібного другого
    • Навчили модель на зарплатах data scientist у США
    • Використайте ваги для навчання на європейських зарплатах

$$

import torch

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

new_layer = torch.load('layer.pth')
Вступ до Deep Learning з PyTorch

Fine-tuning

  • Різновид transfer learning
    • Менша швидкість навчання
    • Тренуємо частину мережі (деякі шари ми заморожуємо)
    • Практичне правило: заморожуйте ранні шари, а fine-tune робіть для шарів ближче до виходу
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
Вступ до Deep Learning з PyTorch

Давайте потренуємось!

Вступ до Deep Learning з PyTorch

Preparing Video For Download...