Пакетная загрузка данных в PyTorch
Для обучения строки из набора удобно
отдавать пакетами. Класс
DataLoader из
torch.utils.data оборачивает
готовый набор и при обходе циклом
возвращает сразу несколько пар
признаков и меток.
Создадим набор из четырёх объектов, обернём его загрузчиком с пакетом из двух строк и выведем форму первого пакета:
import torch
from torch.utils.data import TensorDataset, DataLoader
features = torch.tensor([[1.0, 2.0], [3.0, 4.0], [5.0, 6.0], [7.0, 8.0]])
targets = torch.tensor([0, 1, 0, 1])
ds = TensorDataset(features, targets)
loader = DataLoader(ds, batch_size=2)
for batch_features, batch_targets in loader:
print(batch_features.shape, batch_targets.shape) # выведет torch.Size([2, 2]) torch.Size([2])
break
В пакете признаки собираются в таблицу: первая ось - число строк в пакете, вторая совпадает с шириной одной строки набора. Метки лежат в одномерном тензоре той же длины, что и число строк в пакете.
Из таблицы 6 строк по
2 числа и ряда из
6 меток соберите набор.
Обходите его пакетами по
3 строки и выведите
форму таблицы признаков
в первом пакете.
Для пяти строк-признаков
[[1.0], [2.0], [3.0], [4.0], [5.0]]
и меток [0, 1, 0, 1, 0]
настройте выдачу по две строки
за шаг. Выведите длину ряда
меток в первом полученном пакете.
Соберите набор из восьми
одинаковых строк [0.5, 1.5]
и восьми нулевых меток.
При обходе с размером пакета
4 выведите форму
таблицы признаков одного
из пакетов.