Веса примеров в PyTorch
Если одни записи важнее других,
им можно задать больший вес.
Класс WeightedRandomSampler
строит последовательность номеров
для эпохи: чем выше вес, тем чаще
номер попадает в выборку.
Отдельно задают, сколько номеров выдать за эпоху. Чтобы порядок при повторном запуске совпадал, фиксируют генератор случайных чисел и передают его в выборку.
Зададим веса 1, 3,
1 и 3, запросим
шесть номеров с повторениями
и выведем их:
import torch
from torch.utils.data import WeightedRandomSampler
weights = torch.tensor([1., 3., 1., 3.])
gen = torch.Generator().manual_seed(0)
sampler = WeightedRandomSampler(
weights, num_samples=6, replacement=True, generator=gen,
)
for idx in sampler:
print(idx)
Задайте веса [2., 1., 2.]
для трёх примеров. Запросите
пять номеров с повторениями
при зафиксированном генераторе
и выведите полученный список.
Для четырёх примеров укажите
веса [1., 1., 4., 4.]
и получите восемь номеров за эпоху.
Выведите, сколько раз среди них
встретился номер 2.
Создайте веса длины 5,
где у первого примера вес
10, у остальных -
1. Запросите десять
номеров с повторениями и выведите
первый номер в последовательности.