Функция F.linear
Функция F.linear применяет линейное преобразование к входным данным. Она вычисляет произведение входного тензора на матрицу весов и добавляет смещение. Функция принимает три обязательных параметра: входной тензор input, матрицу весов weight и тензор смещения bias (может быть None).
Входной тензор может иметь любую размерность, но последняя размерность должна соответствовать количеству входных признаков. Матрица весов имеет размерность (out_features, in_features), а смещение - (out_features). Результатом является тензор с той же размерностью, что и входной, но последняя размерность заменяется на out_features.
Синтаксис
torch.nn.functional.linear(input, weight, bias=None)
Пример
Давайте применим линейное преобразование к одномерному тензору:
import torch
import torch.nn.functional as F
t = torch.tensor([1.0, 2.0, 3.0])
weight = torch.tensor([[0.5, 0.5, 0.5]])
bias = torch.tensor([1.0])
res = F.linear(t, weight, bias)
print(res)
Результат выполнения кода:
tensor([4.])
Пример
Применим линейное преобразование к пакету данных (двумерный тензор):
import torch
import torch.nn.functional as F
t = torch.tensor([
[1.0, 2.0, 3.0],
[4.0, 5.0, 6.0],
])
weight = torch.tensor([
[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6],
])
bias = torch.tensor([1.0, -1.0])
res = F.linear(t, weight, bias)
print(res)
Результат выполнения кода:
tensor([
[ 2.4000, 1.8000],
[ 5.7000, 6.0000],
])
Пример
Используем функцию без смещения:
import torch
import torch.nn.functional as F
t = torch.tensor([1.0, 2.0, 3.0])
weight = torch.tensor([
[0.1, 0.2, 0.3],
[0.4, 0.5, 0.6],
])
res = F.linear(t, weight, bias=None)
print(res)
Результат выполнения кода:
tensor([1.4000, 3.2000])
Пример
Применим линейное преобразование к трехмерному тензору (пакет последовательностей):
import torch
import torch.nn.functional as F
t = torch.tensor([
[
[1.0, 2.0],
[3.0, 4.0],
],
[
[5.0, 6.0],
[7.0, 8.0],
],
])
weight = torch.tensor([
[0.1, 0.2],
[0.3, 0.4],
[0.5, 0.6],
])
bias = torch.tensor([1.0, 2.0, 3.0])
res = F.linear(t, weight, bias)
print(res)
Результат выполнения кода:
tensor([
[
[ 1.5000, 2.5000, 3.5000],
[ 2.1000, 4.1000, 6.1000],
],
[
[ 2.7000, 5.7000, 8.7000],
[ 3.3000, 7.3000, 11.3000],
],
])