Метод append
Метод append класса ModuleList предназначен для добавления нового модуля (например, линейного слоя или активации) в конец списка. При использовании этого метода переданный модуль автоматически регистрируется в системе параметров PyTorch, что позволяет оптимизатору отслеживать его веса. В качестве единственного параметра метод принимает экземпляр класса nn.Module. Метод изменяет исходный список и не возвращает никакого значения.
Синтаксис
module_list.append(module)
Пример
Давайте создадим пустой список модулей и добавим в него один линейный слой:
import torch
import torch.nn as nn
layers = nn.ModuleList()
layers.append(nn.Linear(10, 5))
print(layers)
Результат выполнения кода:
ModuleList(
(0): Linear(in_features=10, out_features=5, bias=True)
)
Пример
Теперь добавим несколько модулей подряд и проверим их количество:
import torch
import torch.nn as nn
model = nn.ModuleList()
model.append(nn.Linear(20, 10))
model.append(nn.ReLU())
model.append(nn.Linear(10, 1))
print(len(model))
Результат выполнения кода:
3
Пример
Покажем, что параметры добавленного модуля отслеживаются оптимизатором. Создадим список, добавим слой и проверим наличие параметров:
import torch
import torch.nn as nn
layers = nn.ModuleList()
layers.append(nn.Linear(3, 2))
for param in layers.parameters():
print(param.shape)
Результат выполнения кода:
torch.Size([2, 3])
torch.Size([2])
Смотрите также
-
класс
ModuleList,
который представляет контейнер для последовательного хранения модулей -
метод
extend,
который добавляет несколько модулей в конец списка -
метод
insert,
который вставляет модуль в список по указанному индексу -
класс
ModuleList,
который автоматически регистрирует все добавленные подмодули