Метод pop
Метод pop класса Sequential удаляет и возвращает последний слой,
добавленный в модель. Метод не принимает никаких аргументов.
При вызове он удаляет последний модуль из контейнера и возвращает его,
позволяя использовать удалённый слой для дальнейших операций.
Синтаксис
layer = model.pop()
Пример
Давайте создадим последовательную модель из трёх слоёв и удалим последний слой:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 5)
)
print(model)
Результат выполнения кода:
Sequential(
(0): Linear(in_features=10, out_features=20, bias=True)
(1): ReLU()
(2): Linear(in_features=20, out_features=5, bias=True)
)
Теперь удалим последний слой:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.ReLU(),
nn.Linear(20, 5)
)
last_layer = model.pop()
print(f"Удалённый слой: {last_layer}")
print(f"\nМодель после удаления:\n{model}")
Результат выполнения кода:
Удалённый слой: Linear(in_features=20, out_features=5, bias=True)
Модель после удаления:
Sequential(
(0): Linear(in_features=10, out_features=20, bias=True)
(1): ReLU()
)
Пример
Используем метод pop для удаления слоя и применения его в другой модели:
import torch
import torch.nn as nn
model1 = nn.Sequential(
nn.Linear(10, 30),
nn.ReLU(),
nn.Linear(30, 15)
)
# Удаляем последний слой из первой модели
last_layer = model1.pop()
# Создаём вторую модель и добавляем в неё удалённый слой
model2 = nn.Sequential(
nn.Linear(5, 10),
last_layer
)
print(f"Первая модель:\n{model1}")
print(f"\nВторая модель:\n{model2}")
Результат выполнения кода:
Первая модель:
Sequential(
(0): Linear(in_features=10, out_features=30, bias=True)
(1): ReLU()
)
Вторая модель:
Sequential(
(0): Linear(in_features=5, out_features=10, bias=True)
(1): Linear(in_features=30, out_features=15, bias=True)
)
Пример
Рассмотрим ситуацию, когда модель пуста и вызывается метод pop:
import torch
import torch.nn as nn
empty_model = nn.Sequential()
try:
layer = empty_model.pop()
except IndexError as e:
print(f"Ошибка: {e}")
Результат выполнения кода:
"Ошибка: pop from empty Sequential"
Смотрите также
-
класс
Sequential,
который представляет собой контейнер для последовательного выполнения слоёв -
метод
append,
который добавляет новый слой в конец модели -
метод
insert,
который вставляет слой в модель по указанному индексу -
метод
extend,
который добавляет несколько слоёв в конец модели