РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗pytoSpMdFr 40 of 82 menu
◀ ▶

Заморозка слоя в PyTorch

Заморозка слоя означает, что у его параметров поле записи градиента ставят в ложь. Такие веса не обновляются, хотя прямой проход через них по-прежнему работает. Заморозим первый линейный блок в двухслойной модели:

import torch import torch.nn as nn class PairNet(nn.Module): def __init__(self): super().__init__() self.first = nn.Linear(2, 3) self.second = nn.Linear(3, 1) def forward(self, x): return self.second(self.first(x)) net = PairNet() for param in net.first.parameters(): param.requires_grad = False x = torch.tensor([[1.0, 2.0]]) out = net(x) print(out.shape) # выведет torch.Size([1, 1])

В переборе параметров с включённой записью градиента замороженный слой не появляется - остаются только веса второго блока:

import torch import torch.nn as nn class PairNet(nn.Module): def __init__(self): super().__init__() self.first = nn.Linear(2, 3) self.second = nn.Linear(3, 1) def forward(self, x): return self.second(self.first(x)) net = PairNet() for param in net.first.parameters(): param.requires_grad = False trainable = [ p for p in net.parameters() if p.requires_grad ] print(len(trainable)) # выведет 2

Соберите модуль с линейными слоями 2 на 4 и 4 на 1. Отключите запись градиента у всех весов первого блока. Выведите число тензоров с включённой записью у всей сети.

Опишите сеть из двух линейных преобразований 3 на 2 и 2 на 2. Заморозьте второй блок и выведите, сколько параметров осталось с активной записью градиента.

Создайте блок с линейным слоем 1 на 5 и вторым 5 на 1. У первого фрагмента снимите флаг обучения у каждого тензора. Выведите общее число замороженных скаляров в первом слое.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить