Khởi tạo lớp và học chuyển giao

Nhập môn Deep Learning với PyTorch

Jasmin Ludolf

Senior Data Science Content Developer, DataCamp

Khởi tạo lớp

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

$$

  • Trọng số của một lớp được khởi tạo với giá trị nhỏ
  • Giữ dữ liệu đầu vào và trọng số nhỏ giúp đầu ra ổn định
Nhập môn Deep Learning với PyTorch

Khởi tạo lớp

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>))
Nhập môn Deep Learning với PyTorch

Học chuyển giao

  • Tái sử dụng mô hình đã huấn luyện cho một tác vụ tương tự
    • Đã huấn luyện trên dữ liệu lương nhà khoa học dữ liệu ở Mỹ
    • Dùng trọng số để huấn luyện trên lương ở châu Âu

$$

import torch

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

new_layer = torch.load('layer.pth')
Nhập môn Deep Learning với PyTorch

Tinh chỉnh (fine-tuning)

  • Một dạng của học chuyển giao
    • Tốc độ học nhỏ hơn
    • Huấn luyện một phần mạng (chúng ta đóng băng một số lớp)
    • Quy tắc kinh nghiệm: đóng băng các lớp đầu, tinh chỉnh các lớp gần lớp đầu ra
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
Nhập môn Deep Learning với PyTorch

Hãy thực hành!

Nhập môn Deep Learning với PyTorch

Preparing Video For Download...