Katman başlatma ve transfer öğrenme

PyTorch ile Deep Learning'e Giriş

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Katman başlatma

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>))

$$

  • Bir katmanın ağırlıkları küçük değerlere başlatılır
  • Giriş verisini ve katman ağırlıklarını küçük tutmak, kararlı çıktılar sağlar
PyTorch ile Deep Learning'e Giriş

Katman başlatma

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 ile Deep Learning'e Giriş

Transfer öğrenme

  • Benzer bir ikinci görev için, ilk görevde eğitilen bir modeli yeniden kullanma

    • ABD veri bilimci maaşları üzerinde model eğitildi

    • Ağırlıkları Avrupa maaşlarında eğitmek için kullanın

import torch

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

new_layer = torch.load('layer.pth')
PyTorch ile Deep Learning'e Giriş

İnce ayar (fine-tuning)

  • Bir transfer öğrenme türü
    • Daha küçük öğrenme oranı
    • Ağın bir kısmını eğitin (bazılarını dondururuz)
    • Kural: erken katmanları dondurun, çıktıya yakın katmanları ince ayar yapın
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 ile Deep Learning'e Giriş

Hadi pratik yapalım!

PyTorch ile Deep Learning'e Giriş

Preparing Video For Download...