Слой без входного размера в PyTorch
Класс LazyLinear задаёт только
число выходов. Число входов
появляется после первого
прогона, когда слой видит
форму тензора.
Создадим слой с четырьмя выходами, подадим строку из трёх чисел и посмотрим форму ответа и форму матрицы весов:
import torch
import torch.nn as nn
layer = nn.LazyLinear(4)
batch = torch.tensor([[1.0, 2.0, 3.0]])
output = layer(batch)
print(output.shape) # выведет torch.Size([1, 4])
print(layer.weight.shape) # выведет torch.Size([4, 3])
После первого вызова веса имеют столько столбцов, сколько признаков во входе. Дальнейшие прогоны с той же шириной входа используют уже созданную матрицу.
Создайте ленивый линейный
слой с двумя выходами,
подайте таблицу
[[1.0, 2.0], [3.0, 4.0]]
и выведите форму ответа.
Создайте такой слой
с одним выходом, прогоните
ряд [5.0, 6.0, 7.0, 8.0]
и выведите форму весов
после вызова.
Создайте слой с тремя выходами, подайте одну строку из пяти чисел и выведите форму результата и форму весов.