Веса модели в PyTorch
У линейного слоя внутри модели есть
матрица весов и вектор смещения.
Метод parameters собирает
такие тензоры в один перебор.
Создадим простой блок и посмотрим,
сколько в нём обучаемых чисел:
import torch
import torch.nn as nn
class TinyNet(nn.Module):
def __init__(self):
super().__init__()
self.layer = nn.Linear(2, 3)
def forward(self, x):
return self.layer(x)
net = TinyNet()
weights = list(net.parameters())
total = sum(w.numel() for w in weights)
print(total) # выведет 12
Отдельный элемент перебора - один тензор параметров. Выведем форму матрицы весов линейного слоя:
import torch
import torch.nn as nn
class TinyNet(nn.Module):
def __init__(self):
super().__init__()
self.layer = nn.Linear(2, 3)
def forward(self, x):
return self.layer(x)
net = TinyNet()
weight = list(net.parameters())[0]
print(weight.shape) # выведет torch.Size([3, 2])
Соберите модуль с линейным слоем
на один вход и 5 выходов.
Выведите общее число обучаемых
чисел в модуле.
Создайте модуль с линейным слоем
3 на 2. Выведите
форму первого тензора из перебора
параметров.
Опишите блок с линейным слоем
на 2 входа и 4
выхода. Выведите, сколько
отдельных тензоров отдаёт перебор
параметров модели.