Метод forward
Метод forward класса Sequential выполняет прямой проход
(forward pass) через все слои, добавленные в последовательную
модель. При вызове модели как функции данные последовательно
проходят через каждый слой, и результат предыдущего слоя
становится входом для следующего.
Метод автоматически вызывается при передаче тензора в экземпляр
Sequential. Первым и единственным обязательным параметром
передаётся входной тензор. Выходом метода является тензор,
полученный после прохождения через все слои модели.
Синтаксис
model.forward(x)
Где model - это экземпляр класса Sequential,
а x - входной тензор.
Пример
Создадим простую последовательную модель и выполним прямой проход:
import torch
from torch import nn
model = nn.Sequential(
nn.Linear(5, 3),
nn.ReLU(),
nn.Linear(3, 1)
)
x = torch.randn(2, 5)
res = model.forward(x)
print(res.shape)
Результат выполнения кода:
torch.Size([2, 1])
Пример
Метод forward вызывается неявно при вызове модели как функции:
import torch
from torch import nn
model = nn.Sequential(
nn.Linear(4, 8),
nn.ReLU()
)
x = torch.randn(3, 4)
res1 = model.forward(x)
res2 = model(x)
print(torch.allclose(res1, res2))
Результат выполнения кода:
True
Пример
Прямой проход через модель с несколькими слоями и разными формами:
import torch
from torch import nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.Tanh(),
nn.Linear(20, 15),
nn.Tanh(),
nn.Linear(15, 5)
)
x = torch.randn(4, 10)
res = model.forward(x)
print(res.shape)
Результат выполнения кода:
torch.Size([4, 5])
Смотрите также
-
класс
Sequential,
который создаёт контейнер для последовательного применения слоёв -
метод
append,
который добавляет слой в конец последовательной модели -
метод
insert,
который вставляет слой на указанную позицию -
метод
pop,
который удаляет последний слой из модели