लेयर initialization और transfer learning

PyTorch के साथ Deep Learning परिचय

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Layer initialization

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

$$

  • किसी लेयर के weights छोटे मानों से initialized होते हैं
  • इनपुट डेटा और लेयर weights दोनों को छोटा रखने से outputs स्थिर रहते हैं
PyTorch के साथ Deep Learning परिचय

Layer initialization

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 के साथ Deep Learning परिचय

Transfer learning

  • पहले कार्य पर प्रशिक्षित मॉडल को मिलते-जुलते दूसरे कार्य में दोबारा उपयोग करना
    • US data scientist वेतन पर मॉडल train किया
    • उन्हीं weights से European वेतन पर train करें

$$

import torch

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

new_layer = torch.load('layer.pth')
PyTorch के साथ Deep Learning परिचय

Fine-tuning

  • Transfer learning का एक प्रकार
    • छोटा learning rate
    • नेटवर्क का कुछ हिस्सा train करें (कुछ को हम freeze करते हैं)
    • thumb rule: नेटवर्क की शुरुआती लेयर्स freeze करें और आउटपुट लेयर के पास वाली लेयर्स को 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
PyTorch के साथ Deep Learning परिचय

अभ्यास करते हैं!

PyTorch के साथ Deep Learning परिचय

Preparing Video For Download...