Lagerinitiering och transferinlärning

Introduktion till djupinlärning med PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Lagerinitiering

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

$$

  • Ett lagers vikter initieras till små värden
  • Att hålla både indata och lagervikter små ger stabila utdata
Introduktion till djupinlärning med PyTorch

Lagerinitiering

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>))
Introduktion till djupinlärning med PyTorch

Transferinlärning

  • Återanvänder en modell tränad på en uppgift för en liknande uppgift
    • Tränade en modell på löner för datavetare i USA
    • Använder vikterna för att träna på europeiska löner

$$

import torch

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

new_layer = torch.load('layer.pth')
Introduktion till djupinlärning med PyTorch

Finjustering

  • En form av transferinlärning
    • Lägre inlärningshastighet
    • Träna en del av nätverket (vi fryser vissa lager)
    • Tumregel: frys tidiga lager och finjustera lager nära utdatalagret
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
Introduktion till djupinlärning med PyTorch

Nu kör vi en övning!

Introduktion till djupinlärning med PyTorch

Preparing Video For Download...