# Данные

На этой странице представлена справочная документация по API подпакета `timm.data`, а также обзор входного конвейера, который он предоставляет: разрешение конфигурации предобработки модели, построение трансформаций, создание наборов данных и загрузчиков, Mixup / CutMix и загрузчик NaFlex с переменной разрешающей способностью.

## Использование

Пайплайн собирается в четыре шага: [`resolve_model_data_config`](#timm.data.resolve_model_data_config) читает конфигурацию предобработки модели, [`create_transform`](#timm.data.create_transform) создаёт трансформ для обучения или оценки, [`create_dataset`](#timm.data.create_dataset) создаёт датасет по имени и корневому каталогу, а [`create_loader`](#timm.data.create_loader) создаёт трансформ и загрузчик данных для датасета.

```python
import os
import tempfile

import torch
from PIL import Image

import timm
from timm.data import create_dataset, create_loader, create_transform, resolve_model_data_config

model = timm.create_model('resnet50', pretrained=False).eval()

# Preprocessing config from the model's pretrained_cfg, the default pretrained tag's config is attached to the model
# with or without pretrained weights.
data_config = resolve_model_data_config(model)
print(data_config)
# {'input_size': (3, 224, 224), 'interpolation': 'bicubic', 'mean': (0.485, 0.456, 0.406),
#  'std': (0.229, 0.224, 0.225), 'crop_pct': 0.95, 'crop_mode': 'center'}

# Eval transform for a PIL image, resize to 224 / crop_pct, center crop 224, to tensor and normalize.
transform = create_transform(**data_config, is_training=False)
img = Image.new('RGB', (320, 240), color=(200, 120, 40))
with torch.no_grad():
    output = model(transform(img).unsqueeze(0))  # (1, 1000)

# A folder dataset, <root>/<split>/<class>/<image>, two classes w/ four generated images each.
root = tempfile.mkdtemp()
for i, cls in enumerate(('cat', 'dog')):
    os.makedirs(os.path.join(root, 'validation', cls))
    for j in range(4):
        path = os.path.join(root, 'validation', cls, f'{j}.jpg')
        Image.new('RGB', (300, 200), color=(60 * i, 40 * j, 128)).save(path)

dataset = create_dataset('', root=root, split='validation')  # finds the 'validation' sub-folder
print(len(dataset), dataset.reader.class_to_idx)  # 8 {'cat': 0, 'dog': 1}

# The loader creates the transform from the same config and assigns it to the dataset.
loader = create_loader(dataset, **data_config, batch_size=4, use_prefetcher=False, num_workers=0)
with torch.no_grad():
    for images, targets in loader:
        output = model(images)  # images (4, 3, 224, 224), targets (4,)
```

В [быстром старте](../quickstart#image-augmentation) описаны шаги настройки и преобразования для вывода.

Скрипт обучения (`train.py`) предоставляет следующие параметры для каждой части конвейера.

Переопределения конфигурации входных данных (`resolve_input_data_config`):

- **`--input-size`** задаёт форму входных данных `(C, H, W)`.
- **`--img-size`** — это квадратная альтернатива для `--input-size`, сохраняющая количество каналов модели.
- **`--in-chans`** задаёт количество входных каналов.
- **`--interpolation`** задаёт метод интерполяции при изменении размера.
- **`--mean`** задает среднее значение нормализации.
- **`--std`** задает стандартное отклонение нормализации.
- **`--crop-pct`** задает долю обрезки для оценки.

Создание набора данных (`create_dataset`) и настройка целевой переменной:

- **`--dataset`** выбирает набор данных и считыватель.
- **`--data-dir`** задаёт корневой каталог набора данных.
- **`--train-split`** выбирает обучающую выборку.
- **`--val-split`** выбирает валидационную часть данных.
- **`--class-map`** задаёт сопоставление классов.
- **`--input-img-mode`** задаёт режим преобразования цвета изображения.
- **`--input-key`** выбирает поле изображения.
- **`--target-key`** выбирает поле или поля меток.
- **`--target-format`** выбирает индексы классов или плотные многогорячие целевые значения.

Варианты загрузчика и аугментации (`create_loader`) включают:

- **`--aa`** выбирает политику автоматической аугментации.
- **`--reprob`** задает вероятность случайного стирания.
- **`--remode`** выбирает режим заполнения для случайного стирания.
- **`--scale`** задаёт диапазон масштаба для случайного обрезания с изменением размера.
- **`--ratio`** задаёт диапазон соотношения сторон для случайного обрезания с изменением размера.
- **`--hflip`** задает вероятность горизонтального отражения.
- **`--color-jitter`** задает силу изменения цвета.
- **`--train-interpolation`** задаёт интерполяцию для изменения размера при обучении.
- **`--workers`** задает количество рабочих процессов загрузчика.
- **`--no-prefetcher`** отключает предзагрузчик.

Mixup и CutMix ([`Mixup`](#timm.data.Mixup)):

- **`--mixup`** задает альфа Mixup.
- **`--cutmix`** задает альфа-параметр CutMix.
- **`--cutmix-minmax`** задаёт диапазон размеров CutMix-коробок.
- **`--mixup-prob`** задает вероятность смешивания.
- **`--mixup-switch-prob`** задает вероятность выбора CutMix, когда оба метода включены.
- **`--mixup-mode`** выбирает смешивание на уровне батча, пары или элемента.
- **`--smoothing`** задаёт сглаживание меток.

См. примеры в разделе [Scripts](../training_script).

### Конфигурация данных

[`resolve_data_config`](#timm.data.resolve_data_config) возвращает словарь со следующими ключами, которые соответствуют аргументам `create_transform` и `create_loader`. Значения, установленные в `args` (словарь, например, `vars(args)` разобранных аргументов командной строки), имеют приоритет над аргументом `pretrained_cfg`, значением по умолчанию для которого является `model.pretrained_cfg`. [`resolve_model_data_config`](#timm.data.resolve_model_data_config) делает то же самое, но первым аргументом принимает модель.

Обе функции читают размер входа и количество каналов из предобученного cfg, который описывает исходный чекпоинт, а не модель, созданную или изменённую для использования другого `img_size` или `in_chans`. [`resolve_input_data_config`](#timm.data.resolve_input_data_config), используемая в скриптах обучения, валидации и инференса, разрешает параметры относительно текущего входа модели: модель с фиксированным размером входа всегда получает свой текущий размер, явные `args`, конфликтующие с каналами или фиксированным размером модели, вызывают ошибку, а mean / std, не соответствующие количеству каналов, заменяются их средним значением (с предупреждением).

| Ключ | Ключи `args` | Описание | По умолчанию |
|---|---|---|---|
| `input_size` | `input_size`, `img_size`, `in_chans` | Размер входных данных `(C, H, W)`. Если `use_test_size=True`, используется `test_input_size` из конфигурации, если он в ней задан | `(3, 224, 224)` |
| `interpolation` | `interpolation` | Интерполяция при изменении размера, `bilinear`, `bicubic`, ... | `bicubic` |
| `mean`, `std` | `mean`, `std` | Нормализация, одно значение повторяется для каждого канала | Среднее / стандартное отклонение ImageNet |
| `crop_pct` | `crop_pct` | Eval crop: изображение масштабируется до `size / crop_pct` перед обрезкой до `size` (`test_crop_pct` при `use_test_size=True`) | `0.875` |
| `crop_mode` | `crop_mode` | Режим обрезки для оценки, `center`, `squash` или `border` | `center` |

Режимы обрезки для оценки, для выходного `size` и `scale_size = floor(size / crop_pct)`:

| `crop_mode` | Поведение |
|---|---|
| `center` | Масштабировать самую короткую сторону до `scale_size` (с сохранением соотношения сторон), затем выполнить центрированный кроп до `size` |
| `squash` | Измените размер обоих краёв до `scale_size` (соотношение сторон не сохраняется), затем выполните центрированный кроп до `size` |
| `border` | Масштабируйте самую длинную сторону до `scale_size`, выполните центрированный кроп и заполните края средним цветом; при этом всё изображение сохраняется при `crop_pct=1.0` |

### Преобразования

[`create_transform`](#timm.data.create_transform) возвращает torchvision `Compose`. Преобразование для оценки выполняет изменение размера и обрезку, как описано выше, затем преобразует изображение в тензор и нормализует. Преобразование для обучения включает случайную обрезку с изменением размера (`scale=(0.08, 1.0)`, `ratio=(3/4, 4/3)` по умолчанию), горизонтальное отражение (`hflip=0.5`), изменение цвета (`color_jitter=0.4`), необязательную политику `auto_augment`, преобразование в тензор и нормализацию, а также случайное стирание.

- **`train_crop_mode='rkrc'` или `'rkrr'`** заменяет случайный обрезанный кадр со случайным изменением размера на случайное изменение размера с сохранением соотношения сторон, за которым следует центральный (`rkrc`) или случайный (`rkrr`) обрезанный кадр или заполнение.
- **`interpolation='random'`** (значение по умолчанию в `train.py` для обучения) выбирает для каждого изображения либо билинейную, либо бикубическую интерполяцию.
- **`no_aug=True`** сводит обучение к операции изменения размера и центральному кадрированию.

| `auto_augment` | Аугментация |
|---|---|
| `rand-m9-mstd0.5-inc1` | [`RandAugment`](https://arxiv.org/abs/1909.13719) с помощью [`rand_augment_transform`](#timm.data.rand_augment_transform) |
| `augmix-m5-w4-d2` | [AugMix](https://arxiv.org/abs/1912.02781) с помощью [`augment_and_mix_transform`](#timm.data.auto_augment.augment_and_mix_transform) |
| `original`, `originalr`, `v0`, `v0r`, `3a` | Политика [AutoAugment](https://arxiv.org/abs/1805.09501) через [`auto_augment_transform`](#timm.data.auto_augment_transform) |

Токены опций RandAugment:

- **`m`** задает величину (по умолчанию 10).
- **`n`** задает количество операций на изображение (по умолчанию 2).
- **`p`** задаёт вероятность для каждой операции (по умолчанию 0.5).
- **`mstd`** задает стандартное отклонение шума амплитуды.
- **`inc1`** выбирает операции, серьёзность которых растёт вместе с величиной.
- **`t<name>`** выбирает набор операций (`weights`, `3a`, `3aw`).

Токены опции AugMix:

- **`m`** задаёт уровень серьёзности (по умолчанию 3).
- **`w`** задаёт ширину (по умолчанию 3).
- **`d`** задаёт глубину (по умолчанию -1, случайное значение от 1 до 3).
- **`b1`** позволяет использовать смешанное аугментирование.
- **`mstd`** задает стандартное отклонение шума амплитуды.

AutoAugment принимает `mstd`, например `original-mstd0.5`.

Поведение трансформации:

- Color jitter отключается, если задан параметр `auto_augment`, если только строка не содержит `3a`.
- [`RandomErasing`](#timm.data.random_erasing.RandomErasing) (`re_prob`, `re_count`) выполняется на нормализованном тензоре. `re_mode` заполняет области нулями (`const`, значение по умолчанию), случайным нормальным цветом для каждой области (`rand`) или случайными нормальными пикселями (`pixel`, значение по умолчанию в `train.py`).
- `use_prefetcher=True` завершает трансформацию тензором `uint8`, после чего нормализация и случайное стирание выполняются загрузчиком на устройстве.
- `create_transform` и `create_loader` по умолчанию используют интерполяцию `bilinear` и среднее/стандартное отклонение ImageNet, а не значения модели. Передайте настроенную конфигурацию данных, чтобы соответствовать предобучению модели.

### Наборы данных

[`create_dataset`](#timm.data.create_dataset) выбирает реализацию набора данных и считыватель по префиксу `name`:

| `name` | Набор данных | `root` | Требуется |
|---|---|---|---|
| `''` или без префикса | [`ImageDataset`](#timm.data.ImageDataset), изображения в подпапках классов (поиск выполняется рекурсивно, имя конечной папки является классом) или один файл `.tar` с тем же | Папка с набором данных или файл `.tar` | |
| `torch/<name>` | torchvision `cifar10`, `cifar100`, `mnist`, `kmnist`, `fashion_mnist`, `qmnist`, `inaturalist` (`inat`), `places365`, `imagenet` или `image_folder` (`folder`) | Корень датасета torchvision | |
| `hfds/<name>` | [`ImageDataset`](#timm.data.ImageDataset) на датасете Hugging Face Hub (или локальном пути) через `datasets.load_dataset` | Каталог кэша (необязательно) | `datasets` |
| `hfids/<name>` | [`IterableImageDataset`](#timm.data.IterableImageDataset), набор данных Hugging Face, передаваемый потоком, либо предварительно загруженный и подготовленный с `download=True` | Каталог кэша (необязательно) | `datasets` |
| `tfds/<name>` | [`IterableImageDataset`](#timm.data.IterableImageDataset) в TensorFlow Datasets, `download=True` загружает и строит | Каталог данных TFDS | `tensorflow`, `tensorflow-datasets` |
| `wds/<name>` | [`IterableImageDataset`](#timm.data.IterableImageDataset) на tar-шардах WebDataset | Папка с шардами, содержащая `_info.json` (или `info.json`) с описанием разбиений | `webdataset` |

Варианты набора данных:

- **`split`** выбирает разделение набора данных (по умолчанию `validation`). Для WebDataset это также может быть шаблон шарда с количеством образцов, `'imagenet-train-{0000..1023}.tar|1281167'`.
- **`search_split=True`** (по умолчанию) заставляет датасеты в формате папок искать подпапку `root` с именем `split` или, если её нет, синоним сплита train (`train`, `training`) или eval (`val`, `valid`, `validation`, `eval`, `evaluation`).
- **`add_img_extensions`** добавляет расширения к стандартным расширениям изображений (`.png`, `.jpg` и `.jpeg`).
- **`class_map`** переназначает имена классов на индексы с помощью словаря, файла `.txt` (один класс на строку) или файла `.pkl`.

Итерируемые наборы данных (`hfids`, `tfds`, `wds`) также принимают:

- **`is_training`** включает перемешивание.
- **`batch_size`** округляет долю каждого воркера вверх до целых батчей при обучении.
- **`num_samples`** задаёт количество выборок, что обязательно, если считыватель не может определить его самостоятельно (`hfids` без информации о сплите).
- **`seed`** задает случайный посев.
- **`repeats`** умножает количество образцов на эпоху, и читатели проходят по данным столько же раз.

Вызывайте `dataset.set_epoch()` в каждой эпохе для перемешивания.

Другие именованные аргументы передаются в читатель. Для читателей Hugging Face, TFDS и WebDataset:

- **`input_key`** выбирает поле изображения (по умолчанию `image`, для `wds` — изображение в формате `jpg`, `png` или `webp`).
- **`target_key`** выбирает поле меток (по умолчанию `label`, для `wds` — файл `.cls` или поле в сопутствующем файле `.json` с именем, заданным в `target_key`). Значение, разделённое запятыми, читает одно бинарное поле на каждый класс.
- **`target_format='multihot'`** читает плотные многогорячие векторы вместо списков индексов классов для данных с несколькими метками.
- **`target_transform=MultiLabelTarget(num_classes)`** кодирует целевые значения как float-тензоры с мультихот-кодированием. Передайте `dense=True` в [`MultiLabelTarget`](#timm.data.MultiLabelTarget) для полей с мультихот-кодированием.

Читатели папок и tar-архивов возвращают индексы одного класса. Подробности см. в разделе [многоклассовая классификация](../training_script#multi-label-classification).

### Загрузчики

[`create_loader`](#timm.data.create_loader) создаёт трансформ с помощью `create_transform` на основе собственных аргументов, назначает его в `dataset.transform` (заменяя существующий трансформ) и возвращает `DataLoader`. Загрузчики для обучения (`is_training=True`) перемешивают данные и отбрасывают последний неполный батч.

- **Предварительный загрузчик (Prefetcher).** При `use_prefetcher=True` (по умолчанию) набор данных возвращает тензоры типа `uint8`, батчи перемещаются на `device` (по умолчанию `cuda`, на отдельном потоке для CUDA), преобразуются в `img_dtype`, нормализуются и случайно стираются там. Укажите `device` как устройство обучения или задайте `use_prefetcher=False` для обычного `DataLoader` с нормализованными тензорами.
- **Распределённый режим.** `distributed=True` использует `DistributedSampler` для обучающих наборов данных map-style (или повторный сэмплер аугментации с `num_aug_repeats`) и упорядоченный сэмплер для оценки, который дополняет каждый процесс до одинакового количества образцов, что может незначительно изменить результаты валидации. Итерируемые наборы данных самостоятельно распределяются по процессам и воркерам.
- **Collate.** `collate_fn` заменяет стандартную (`fast_collate` с prefetcher, `default_collate` без него), например, на [`FastCollateMixup`](#timm.data.FastCollateMixup).
- **Разделения для аугментации.** Для AugMix с потерей JSD (`--aug-splits`) оберните датасет в [`AugMixDataset`](#timm.data.AugMixDataset)`(dataset, num_splits=n)` и передайте `num_aug_splits=n`. Каждая партия содержит чистое разделение и `n - 1` аугментированных разделений, которые конкатенируются вдоль измерения партии префетчером.
- **Планируемое разрешение.** `input_size_choices` (`--train-img-sizes`) выбирает размер входных данных для каждой партии, при необходимости с указанием размера партии для каждого варианта (`batch_size_choices`) и `progressive` расписанием от первого до последнего варианта.

### Mixup и CutMix

[`Mixup`](#timm.data.Mixup) смешивает батч нормализованных изображений на устройстве, после загрузчика. [`FastCollateMixup`](#timm.data.FastCollateMixup) принимает те же аргументы и смешивает изображения `uint8` во время коллации в воркерах загрузчика, для этого требуется префетчер. Оба возвращают плотные целевые значения `(batch_size, num_classes)` с применённым `label_smoothing` (по умолчанию `0.1`), которые предназначены для использования с потерей для мягких целевых значений, например `timm.loss.SoftTargetCrossEntropy`, и требуют чётный размер батча.

```python
from timm.data import Mixup, FastCollateMixup

# Continuing the example above.
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
mixup_args = dict(mixup_alpha=0.8, cutmix_alpha=1.0, label_smoothing=0.1, num_classes=1000)

# Prefetcher enabled (default), mixed in the loader's collate.
loader = create_loader(
    dataset,
    **data_config,
    batch_size=4,
    is_training=True,
    collate_fn=FastCollateMixup(**mixup_args),
    device=device,
)
for images, targets in loader:
    ...  # images normalized on device, targets (4, 1000)

# Prefetcher disabled, mixed in the training loop.
loader = create_loader(dataset, **data_config, batch_size=4, is_training=True, use_prefetcher=False)
mixup_fn = Mixup(**mixup_args)
for images, targets in loader:
    images, targets = mixup_fn(images.to(device), targets.to(device))
```

Параметры Mixup и CutMix:

- **`mixup_alpha > 0`** включает Mixup.
- **`cutmix_alpha > 0`** включает CutMix.
- **`cutmix_minmax`** включает CutMix с диапазоном размеров рамки.
- **`switch_prob`** задает вероятность выбора CutMix, когда оба метода включены.
- **`prob`** задает вероятность смешивания.
- **`mode`** выполняет выборку параметров один раз на `batch`, на `pair` элементов или на `elem` (элемент).
- **`multi_label=True`** смешивает плотные многометочные целевые значения, сглаживая каждую метку в сторону 0.5.
- **`mixup_enabled = False`** отключает смешивание, например, для последних эпох (`--mixup-off-epoch`). Для `FastCollateMixup` значение читается в рабочих процессах; постоянные рабочие процессы сохраняют значение, с которым они были запущены.

### НаFlex переменное разрешение

[`create_naflex_loader`](#timm.data.create_naflex_loader) загружает изображения как последовательности патчей переменной длины, без изменения размера до фиксированного квадрата, для моделей, принимающих вход в формате патчей NaFlex (например, модели `naflexvit_*`). Каждая партия представляет собой словарь с ключами `patches`, `patch_coord`, `patch_valid` и `seq_len`, дополненный до длины последовательности партии.

- **Обучение.** Набор данных оборачивается в [`NaFlexMapDatasetWrapper`](#timm.data.NaFlexMapDatasetWrapper) (только для map-style наборов данных), который выбирает одно из значений `train_seq_lens` для каждой партии и выполняет случайное обрезание с изменением размера каждого изображения так, чтобы оно соответствовало выбранному количеству патчей. `batch_size` — это размер партии при максимальной длине последовательности; для более коротких последовательностей размер партии увеличивается пропорционально (округляется вниз до кратного 8), чтобы количество токенов в партии оставалось примерно постоянным. `patch_size_choices` (вместе с `patch_size_choice_probs`) также варьирует размер патча для каждой партии, если модель это поддерживает.
- **Оценка.** Изображения масштабируются так, чтобы вписать `max_seq_len` патчей при заданном `patch_size` (обязательно для оценки), и дополняются до `max_seq_len`.
- **Mixup.** Передайте [`NaFlexMixup`](#timm.data.NaFlexMixup) в качестве `mixup_fn`: он выполняет смешивание внутри каждой партии и не поддерживает `mode` или `cutmix_minmax`.

Варианты `train.py`:

- **`--naflex-loader`** включает загрузчик NaFlex.
- **`--naflex-train-seq-lens`** задаёт длины последовательностей для обучения.
- **`--naflex-max-seq-len`** задает максимальную длину последовательности для оценки.
- **`--naflex-patch-sizes`** задаёт размеры патчей для обучения с переменным размером патчей.
- **`--naflex-patch-size-probs`** задаёт вероятности для указанных размеров патчей.
- **`--naflex-loss-scale`** выбирает масштабирование потерь в зависимости от размера батча (`none`, `sqrt` или `linear`).

## API

### Конфигурация данных[[timm.data.resolve_data_config]]

#### timm.data.resolve_data_config[[timm.data.resolve_data_config]]

```python
timm.data.resolve_data_config(args = None, pretrained_cfg = None, model = None, use_test_size = False, verbose = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/config.py#L8)

#### timm.data.resolve_model_data_config[[timm.data.resolve_model_data_config]]

```python
timm.data.resolve_model_data_config(model, args = None, pretrained_cfg = None, use_test_size = False, verbose = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/config.py#L103)

**Параметры:**

model (nn.Module) : экземпляр модели

args (dict) : аргументы командной строки / конфигурация в формате dict (перекрывает pretrained_cfg)

pretrained_cfg (dict) : конфигурация предобученной модели (заменяет pretrained_cfg, привязанную к модели)

use_test_size (bool) : использовать разрешение входных данных на этапе тестирования (если оно существует), а не разрешение по умолчанию для обучения

verbose (bool) : включить дополнительное логирование разрешённых значений

**Возвращает:**

словарь конфигурации

Resolve Model Data Config Это эквивалент resolve_data_config(), но с изменённым порядком аргументов, чтобы модель шла первой.

#### timm.data.resolve_input_data_config[[timm.data.resolve_input_data_config]]

```python
timm.data.resolve_input_data_config(model, args: typing.Optional[typing.Dict[str, typing.Any]] = None, pretrained_cfg: typing.Optional[typing.Dict[str, typing.Any]] = None, use_test_size: bool = False, verbose: bool = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/model_config.py#L17)

Разрешите предобработку с учётом ограничений на вход для текущей модели.

Фиксированные размеры и каналы должны соответствовать явным запросам. Гибкие модели сохраняют рекомендации по предобработке для обучения и тестирования, если они не переопределены. Нормализация использует существующую политику адаптации каналов загрузчиков с предварительной загрузкой.

### Преобразования[[timm.data.create_transform]]

#### timm.data.create_transform[[timm.data.create_transform]]

```python
timm.data.create_transform(input_size: typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]] = 224, is_training: bool = False, no_aug: bool = False, train_crop_mode: typing.Optional[str] = None, scale: typing.Optional[typing.Tuple[float, float]] = None, ratio: typing.Optional[typing.Tuple[float, float]] = None, hflip: float = 0.5, vflip: float = 0.0, color_jitter: typing.Union[float, typing.Tuple[float, ...]] = 0.4, color_jitter_prob: typing.Optional[float] = None, grayscale_prob: float = 0.0, gaussian_blur_prob: float = 0.0, auto_augment: typing.Optional[str] = None, interpolation: str = 'bilinear', mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406), std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225), re_prob: float = 0.0, re_mode: str = 'const', re_count: int = 1, re_num_splits: int = 0, crop_pct: typing.Optional[float] = None, crop_mode: typing.Optional[str] = None, crop_border_pixels: typing.Optional[int] = None, tf_preprocessing: bool = False, use_prefetcher: bool = False, normalize: bool = True, separate: bool = False, naflex: bool = False, patch_size: typing.Union[int, typing.Tuple[int, int]] = 16, max_seq_len: int = 576, patchify: bool = False, patchify_channels_last: bool = True, patchify_flatten: bool = True)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/transforms_factory.py#L387)

**Параметры:**

input_size : целевой размер входных данных (каналы, высота, ширина) в виде кортежа или скалярного значения.

is_training : Возвращает трансформации для обучения (случайные).

no_aug : Отключить аугментацию для обучения (полезно для отладки).

train_crop_mode : Режим случайного кадрирования при обучении ('rrc', 'rkrc', 'rkrr').

scale : Диапазон случайного изменения масштаба (область кадрирования, < 1.0 => приближение).

ratio : Диапазон случайного соотношения сторон (коэффициент обрезки для RRC, коэффициент корректировки соотношения для RKR).

hflip : Вероятность горизонтального отражения.

vflip : Вероятность вертикального переворота.

color_jitter : Коэффициенты случайного изменения цвета (яркость, контрастность, насыщенность, тон). Скаляр применяется как (scalar,) * 3 (без тона).

color_jitter_prob : Применяет цветовые искажения с этой вероятностью, если значение не равно None (для аугментаций в стиле SimCLR).

grayscale_prob : Вероятность преобразования изображения в оттенки серого (для аугментаций в стиле SimCLR).

gaussian_blur_prob : Вероятность применения гауссова размытия (для аугментаций в стиле SimCLR).

auto_augment : строка конфигурации Auto augment (см. auto_augment.py).

interpolation : Режим интерполяции изображений.

mean : Среднее значение для нормализации изображения.

std : Стандартное отклонение для нормализации изображений.

re_prob : Вероятность случайного стирания.

re_mode : Режим заполнения для случайного стирания.

re_count : Количество областей случайного удаления.

re_num_splits : Управление распределением случайного стирания по размеру батча.

crop_pct : Процент обрезки при выводе (размер вывода / размер масштабирования).

crop_mode : Режим обрезки при инференсе. Одно из значений ['squash', 'border', 'center']. По умолчанию 'center', если значение равно None.

crop_border_pixels : Поле обрезки при инференсе: указанное количество # пикселей вокруг края исходного изображения.

tf_preprocessing : Используйте предобработку для вывода TF 1.0 при тестировании портированных моделей

use_prefetcher : Предзагрузчик включен. Не преобразуйте изображение в тензор и не нормализуйте.

normalize : Выход тензора нормализации с предоставленными средним/стандартным отклонением (если prefetcher не используется).

separate : Преобразования вывода в 3-элементный кортеж.

patchify : Разбивайте вывод на патчи, вместо того чтобы полагаться на предзагрузчик.

patchify_channels_last : Используйте каналы в конце (channels-last) внутри каждого патча.

patchify_flatten : Развернуть оценочные патчи в векторы. Отключите, если модели требуются их пространственные размеры для интерполяции размера патча.

**Возвращает:**

Составные трансформации или кортеж из них

#### timm.data.rand_augment_transform[[timm.data.rand_augment_transform]]

```python
timm.data.rand_augment_transform(config_str: str, hparams: typing.Optional[typing.Dict] = None, transforms: typing.Union[str, typing.Dict, typing.List, NoneType] = None)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/auto_augment.py#L762)

**Параметры:**

config_str (str) : строка, определяющая конфигурацию случайного аугментирования. Состоит из нескольких разделов, разделённых дефисами ('-'). Первый раздел определяет конкретный вариант rand augment (в настоящее время поддерживается только 'rand'). Остальные разделы, порядок которых не важен, определяют * 'm' - целое число, величина (magnitude) rand augment * 'n' - целое число, количество слоёв (число выбранных операций трансформации на изображение) * 'p' - вещественное число, вероятность применения каждого слоя (по умолчанию 0.5) * 'mstd' - вещественное число, стандартное отклонение шума величины, применяемого к magnitude, или равномерная выборка, если значение бесконечно (или > 100) * 'mmax' - установить верхнюю границу величины (magnitude) в значение, отличное от значения по умолчанию  _LEVEL_DENOM (10) * 'inc' - целое число (bool), использовать аугментации, серьёзность которых возрастает с увеличением величины (по умолчанию: 0) * 't' - строка, имя набора трансформаций для использования

hparams (dict) : Другие гиперпараметры (kwargs) для схемы RandAugmentation

**Возвращает:**

Совместимый с PyTorch трансформ

Создайте трансформацию RandAugment

Примеры:
- `'rand-m9-n3-mstd0.5'` — это RandAugment с величиной 9, 3 слоями и стандартным отклонением величины 0.5.
- `'rand-mstd1-tweights'` — это RandAugment со стандартным отклонением величины 1.0 и взвешенным выбором трансформаций, при стандартной величине 10 и 2 слоях.

#### timm.data.auto_augment_transform[[timm.data.auto_augment_transform]]

```python
timm.data.auto_augment_transform(config_str: str, hparams: typing.Optional[typing.Dict] = None)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/auto_augment.py#L586)

**Параметры:**

config_str : строка, определяющая конфигурацию автоматического аугментации. Состоит из нескольких разделов, разделённых дефисами ('-'). Первый раздел определяет политику AutoAugment (одна из 'v0', 'v0r', 'original', 'originalr'). Остальные разделы определяют другие аргументы * 'mstd' -  float стандартное отклонение шума амплитуды, применяемого

hparams : Другие гиперпараметры (kwargs) для схемы AutoAugmentation

**Возвращает:**

Совместимый с PyTorch трансформ

Создайте трансформацию AutoAugment

Примеры:
- `'original-mstd0.5'` — это AutoAugment с исходной политикой и стандартным отклонением величины 0.5.

#### timm.data.auto_augment.augment_and_mix_transform[[timm.data.auto_augment.augment_and_mix_transform]]

```python
timm.data.auto_augment.augment_and_mix_transform(config_str: str, hparams: typing.Optional[typing.Dict] = None)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/auto_augment.py#L948)

**Параметры:**

config_str (str) : Строка, определяющая конфигурацию случайного аугментирования. Состоит из нескольких разделов, разделённых дефисами ('-'). Первый раздел определяет конкретный вариант rand augment (в настоящее время поддерживается только 'rand'). Остальные разделы, порядок которых не важен, определяют: 'm' — целое число, величина (серьёзность) смеси аугментаций (по умолчанию: 3) 'w' — целое число, ширина цепочки аугментаций (по умолчанию: 3) 'd' — целое число, глубина цепочки аугментаций (-1 означает случайное значение из диапазона [1, 3], по умолчанию: -1) 'b' — целое число (булево), смешивать каждую ветвь цепочки в итоговый результат без финального смешивания, меньше нагрузки на CPU (по умолчанию: 0) 'mstd' — вещественное число, стандартное отклонение шума величины, применяемого (по умолчанию: 0) Пример: 'augmix-m5-w4-d2' приводит к AugMix с серьёзностью 5, шириной цепочки 4 и глубиной цепочки 2

hparams : Другие гиперпараметры (kwargs) для трансформаций Augmentation

**Возвращает:**

Совместимый с PyTorch трансформ

Создание трансформации AugMix для PyTorch

#### timm.data.random_erasing.RandomErasing[[timm.data.random_erasing.RandomErasing]]

```python
timm.data.random_erasing.RandomErasing(probability = 0.5, min_area = 0.02, max_area = 0.3333333333333333, min_aspect = 0.3, max_aspect = None, mode = 'const', min_count = 1, max_count = None, num_splits = 0, device = 'cuda')
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/random_erasing.py#L26)

**Параметры:**

probability : Вероятность выполнения операции Random Erasing.

min_area : Минимальный процент площади стёртой области относительно площади входного изображения.

max_area : Максимальный процент стёртой области относительно площади входного изображения.

min_aspect : Минимальное соотношение сторон стираемой области.

mode : режим цвета пикселей, один из 'const', 'rand' или 'pixel' 'const' — блок стирания имеет постоянный цвет 0 для всех каналов 'rand' — блок стирания имеет одинаковый случайный (нормальный) цвет для каждого канала 'pixel' — блок стирания имеет случайный (нормальный) цвет для каждого пикселя

Случайным образом выбирает прямоугольную область на изображении и стирает её пиксели. «Random Erasing Data Augmentation» Zhong et al. См. https://arxiv.org/pdf/1708.04896.pdf

Этот вариант RandomErasing предназначен для применения к тензору батча или одиночного изображения после его нормализации средним и стандартным отклонением набора данных.

max_count: максимальное количество блоков стирания на изображение, площадь каждого блока масштабируется в зависимости от количества. Количество блоков на изображение выбирается случайно в диапазоне от 1 до этого значения.

### Наборы данных[[timm.data.create_dataset]]

#### timm.data.create_dataset[[timm.data.create_dataset]]

```python
timm.data.create_dataset(name: str, root: typing.Optional[str] = None, split: str = 'validation', search_split: bool = True, class_map: dict = None, load_bytes: bool = False, is_training: bool = False, download: bool = False, batch_size: int = 1, num_samples: typing.Optional[int] = None, seed: int = 42, repeats: int = 0, input_img_mode: str = 'RGB', trust_remote_code: bool = False, **kwargs)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/dataset_factory.py#L63)

**Параметры:**

name : Имя набора данных, для наборов данных на основе папок может быть пустым. Префикс (например, `hfds/`) не зависит от регистра, остальная часть передаётся как есть (с учётом регистра), за исключением имён `torch/`.

root : Корневая папка набора данных (Все)

split : Разбиение набора данных (Все)

search_split : Поиск конкретного дочернего свёртка из корня, чтобы можно было указать `imagenet/` вместо `/imagenet/val` и т. д. в командной строке / конфигурации. (Папка, Torch)

class_map : Укажите сопоставление класс -> индекс с помощью текстового файла или словаря (Folder)

load_bytes : Загрузите данные, верните изображения в виде недекодированных байтов (Folder)

download : Загрузить набор данных, если он отсутствует и поддерживается (HFIDS, TFDS, Torch)

is_training : Создать датасет в режиме обучения, это отличается от разбиения. Для Iterable / TDFS это включает перемешивание, для других датасетов игнорируется. (TFDS, WDS, HFIDS)

batch_size : Подсказка размера батча для итерируемых наборов данных (TFDS, WDS, HFIDS)

seed : Значение seed для итерируемых наборов данных (TFDS, WDS, HFIDS)

repeats : Повтор датасета на каждой итерации, т.е. эпохе (TFDS, WDS, HFIDS)

input_img_mode : Режим преобразования цвета входного изображения, например, 'RGB', 'L' (папка, TFDS, WDS, HFDS, HFIDS)

trust_remote_code : Доверять удалённому коду в Hugging Face Datasets, если True (HFDS, HFIDS)

- ****kwargs** : Другие аргументы для передачи в базовые классы Dataset и/или Reader

**Возвращает:**

Объект Dataset

Фабричный метод датасета

В скобках после каждого аргумента указан тип поддерживаемого для него набора данных, один из:
* Папка — по умолчанию, набор данных изображений на основе папки (или архива tar) timm
* Torch - наборы данных на основе torchvision
* HFDS - Hugging Face Datasets
* HFIDS - Hugging Face Datasets Iterable (потоковый режим, с IterableDataset)
* TFDS - обёртка над Tensorflow-datasets в интерфейсе IterableDataset через IterableImageDataset
* WDS - Webdataset
* Все — любой из перечисленных выше

#### timm.data.ImageDataset[[timm.data.ImageDataset]]

```python
timm.data.ImageDataset(root, reader = None, split = 'train', class_map = None, load_bytes = False, input_img_mode = 'RGB', transform = None, target_transform = None, additional_features = None, **kwargs)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/dataset.py#L23)

#### timm.data.IterableImageDataset[[timm.data.IterableImageDataset]]

```python
timm.data.IterableImageDataset(root, reader = None, split = 'train', class_map = None, is_training = False, batch_size = 1, num_samples = None, seed = 42, repeats = 0, download = False, input_img_mode = 'RGB', input_key = None, target_key = None, transform = None, target_transform = None, max_steps = None, **kwargs)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/dataset.py#L95)

#### timm.data.AugMixDataset[[timm.data.AugMixDataset]]

```python
timm.data.AugMixDataset(dataset, num_splits = 2)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/dataset.py#L175)

Обёртка набора данных для выполнения AugMix или других смесей чистых/дополненных данных

#### timm.data.MultiLabelTarget[[timm.data.MultiLabelTarget]]

```python
timm.data.MultiLabelTarget(num_classes: int, dense: bool = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/target_transforms.py#L5)

Кодирует многометочную цель как многогорячий тензор float32 длины num_classes.

По умолчанию целевое значение представляет собой последовательность индексов положительных классов: пустая последовательность означает отсутствие положительных меток, повторения разрешены, а отрицательные, выходящие за пределы диапазона или нецелочисленные значения отклоняются. При dense=True целевое значение уже является вектором длины num_classes, содержащим значения типа bool, int или float в диапазоне [0, 1]; оно проверяется и приводится к float32, при этом сохраняются «мягкие» значения.

### Загрузчики[[timm.data.create_loader]]

#### timm.data.create_loader[[timm.data.create_loader]]

```python
timm.data.create_loader(dataset: typing.Union[timm.data.dataset.ImageDataset, timm.data.dataset.IterableImageDataset], input_size: typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]], batch_size: int, is_training: bool = False, no_aug: bool = False, re_prob: float = 0.0, re_mode: str = 'const', re_count: int = 1, re_split: bool = False, train_crop_mode: typing.Optional[str] = None, scale: typing.Optional[typing.Tuple[float, float]] = None, ratio: typing.Optional[typing.Tuple[float, float]] = None, hflip: float = 0.5, vflip: float = 0.0, color_jitter: float = 0.4, color_jitter_prob: typing.Optional[float] = None, grayscale_prob: float = 0.0, gaussian_blur_prob: float = 0.0, auto_augment: typing.Optional[str] = None, num_aug_repeats: int = 0, num_aug_splits: int = 0, interpolation: str = 'bilinear', mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406), std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225), num_workers: int = 1, distributed: bool = False, crop_pct: typing.Optional[float] = None, crop_mode: typing.Optional[str] = None, crop_border_pixels: typing.Optional[int] = None, collate_fn: typing.Optional[typing.Callable] = None, pin_memory: bool = False, fp16: bool = False, img_dtype: dtype = torch.float32, device: device = torch.device(), use_prefetcher: bool = True, use_multi_epochs_loader: bool = False, persistent_workers: bool = True, worker_seeding: str = 'all', tf_preprocessing: bool = False, input_size_choices: typing.Optional[typing.Sequence[typing.Union[int, typing.Tuple[int, int], typing.Tuple[int, int, int]]]] = None, batch_size_choices: typing.Optional[typing.Sequence[int]] = None, batch_choice_weights: typing.Optional[typing.Sequence[float]] = None, batch_choice_seed: int = 0, batch_choice_schedule: str = 'constant', batch_schedule_epochs: typing.Optional[int] = None, batch_schedule_spread: float = 0.65, batch_schedule_random_mix: float = 0.1, num_batches: typing.Optional[int] = None)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/loader.py#L223)

**Параметры:**

dataset : набор изображений для загрузки.

input_size : целевой размер входных данных (каналы, высота, ширина) в виде кортежа или скалярного значения.

batch_size : Количество образцов в батче.

is_training : Возвращает трансформации для обучения (случайные).

no_aug : Отключить аугментацию для обучения (полезно для отладки).

re_prob : Вероятность случайного стирания.

re_mode : Режим заполнения для случайного стирания.

re_count : Количество областей случайного удаления.

re_split : Управление распределением случайного стирания по размеру батча.

scale : Диапазон случайного изменения масштаба (область кадрирования, &amp;lt; 1.0 => приближение).

ratio : Диапазон случайного соотношения сторон (коэффициент обрезки для RRC, коэффициент корректировки соотношения для RKR).

hflip : Вероятность горизонтального отражения.

vflip : Вероятность вертикального переворота.

color_jitter : Коэффициенты случайного изменения цвета (яркость, контрастность, насыщенность, тон). Скаляр применяется как (scalar,) * 3 (без тона).

color_jitter_prob : Применяет цветовые искажения с этой вероятностью, если значение не равно None (для аугментаций в стиле SimCLR

grayscale_prob : Вероятность преобразования изображения в оттенки серого (для аугментаций в стиле SimCLR).

gaussian_blur_prob : Вероятность применения гауссова размытия (для аугментаций в стиле SimCLR).

auto_augment : строка конфигурации Auto augment (см. auto_augment.py).

num_aug_repeats : Включите специальный сэмплер для повторения одного и того же аугментации на распределённых GPU.

num_aug_splits : Включить режим, в котором аугментации могут распределяться по батчу.

interpolation : Режим интерполяции изображений.

mean : Среднее значение для нормализации изображения.

std : Стандартное отклонение для нормализации изображений.

num_workers : Количество рабочих процессов на каждый DataLoader.

distributed : Включить загрузку данных для распределённого обучения.

crop_pct : Процент обрезки при выводе (размер вывода / размер масштабирования).

crop_mode : Режим обрезки при инференсе. Одно из значений ['squash', 'border', 'center']. По умолчанию 'center', если значение равно None.

crop_border_pixels : Поле обрезки при инференсе: указанное количество # пикселей вокруг края исходного изображения.

collate_fn : Переопределить стандартный collate_fn.

pin_memory : Зафиксировать память для передачи на устройство.

fp16 : Устаревший аргумент для типа входных данных с половинной точностью. Используйте img_dtype.

img_dtype : Тип данных для входного изображения.

device : Устройство, на которое передаются входные данные и целевые значения.

use_prefetcher : Используйте эффективный префетчер для загрузки выборок на устройство.

use_multi_epochs_loader --

persistent_workers : Включает постоянные рабочие процессы, если `num_workers` больше нуля.

worker_seeding : Управление случайной инициализацией рабочих процессов при инициализации.

tf_preprocessing : Используйте предобработку для вывода TF 1.0 при тестировании портированных моделей.

input_size_choices : Варианты размера входных данных на каждый пакет для обучения с запланиемым разрешением.

batch_size_choices : Размер батча, соответствующий каждому варианту размера входных данных. Если не указано, для всех вариантов используется `batch_size`.

batch_choice_weights : Веса выборки для вариантов размера входных данных. Равномерные, если не указаны.

batch_choice_seed : Случайное зерно, используемое для создания и перемешивания расписания батчей.

batch_choice_schedule : Режим расписания выбора, `constant` или `progressive`.

batch_schedule_epochs : Количество эпох, в течение которых прогрессивное расписание проходит по своим вариантам.

batch_schedule_spread : Стандартное отклонение окна прогрессивного выбора, в единицах индекса выбора.

batch_schedule_random_mix : Доля равномерного случайного исследования среди вариантов с ненулевым весом в прогрессивном расписании.

num_batches : фиксированное количество батчей загрузчика на эпоху. Если не указано, вычисляется из среднего размера батча по расписанию для прогрессивных расписаний.

**Возвращает:**

DataLoader

### Mixup и CutMix[[timm.data.Mixup]]

#### timm.data.Mixup[[timm.data.Mixup]]

```python
timm.data.Mixup(mixup_alpha = 1.0, cutmix_alpha = 0.0, cutmix_minmax = None, prob = 1.0, switch_prob = 0.5, mode = 'batch', correct_lam = True, label_smoothing = 0.1, num_classes = 1000, multi_label = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/mixup.py#L96)

**Параметры:**

mixup_alpha (float) : значение альфы для mixup, mixup активен, если > 0.

cutmix_alpha (float) : значение альфы для cutmix, cutmix активен, если > 0.

cutmix_minmax (List[float]) : минимальное/максимальное соотношение изображений для cutmix; cutmix активен и использует это значение вместо alpha, если оно не равно None.

prob (float) : вероятность применения mixup или cutmix для каждой партии или элемента

switch_prob (float) : вероятность переключения на cutmix вместо mixup, когда оба активны

mode (str) : способ применения параметров mixup/cutmix (для 'batch', 'pair' (пара элементов), 'elem' (элемент)

correct_lam (bool) : применять коррекцию lambda, когда bbox cutmix обрезается границами изображения

label_smoothing (float) : применить сглаживание меток к смешанному тензору целевых значений

num_classes (int) : количество классов для целевой переменной

multi_label (bool) : Смешивает плотные многометочные целевые значения, сглаживая каждую метку в сторону 0.5.

Mixup/Cutmix, применяющий разные параметры к каждому элементу или всей выборке

#### timm.data.FastCollateMixup[[timm.data.FastCollateMixup]]

```python
timm.data.FastCollateMixup(mixup_alpha = 1.0, cutmix_alpha = 0.0, cutmix_minmax = None, prob = 1.0, switch_prob = 0.5, mode = 'batch', correct_lam = True, label_smoothing = 0.1, num_classes = 1000, multi_label = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/mixup.py#L229)

Быстрый Collate с Mixup/Cutmix, применяющий разные параметры к каждому элементу или ко всей выборке

Реализация Mixup, выполняемая при формировании батчей.

### NaFlex[[timm.data.create_naflex_loader]]

#### timm.data.create_naflex_loader[[timm.data.create_naflex_loader]]

```python
timm.data.create_naflex_loader(dataset, patch_size: typing.Union[int, typing.Tuple[int, int], NoneType] = None, patch_size_choices: typing.Optional[typing.List[int]] = None, patch_size_choice_probs: typing.Optional[typing.List[float]] = None, train_seq_lens: typing.Tuple[int, ...] = (128, 256, 576, 784, 1024), max_seq_len: int = 576, batch_size: int = 32, is_training: bool = False, mixup_fn: typing.Optional[typing.Callable] = None, no_aug: bool = False, re_prob: float = 0.0, re_mode: str = 'const', re_count: int = 1, re_split: bool = False, train_crop_mode: typing.Optional[str] = None, scale: typing.Optional[typing.Tuple[float, float]] = None, ratio: typing.Optional[typing.Tuple[float, float]] = None, hflip: float = 0.5, vflip: float = 0.0, color_jitter: float = 0.4, color_jitter_prob: typing.Optional[float] = None, grayscale_prob: float = 0.0, gaussian_blur_prob: float = 0.0, auto_augment: typing.Optional[str] = None, num_aug_repeats: int = 0, num_aug_splits: int = 0, interpolation: str = 'bilinear', mean: typing.Tuple[float, ...] = (0.485, 0.456, 0.406), std: typing.Tuple[float, ...] = (0.229, 0.224, 0.225), channels: int = 3, crop_pct: typing.Optional[float] = None, crop_mode: typing.Optional[str] = None, crop_border_pixels: typing.Optional[int] = None, num_workers: int = 4, distributed: bool = False, rank: int = 0, world_size: int = 1, seed: int = 42, epoch: int = 0, use_prefetcher: bool = True, pin_memory: bool = True, img_dtype: dtype = torch.float32, device: typing.Union[str, torch.device] = torch.device(), persistent_workers: bool = True, worker_seeding: str = 'all', patchify_channels_last: bool = True)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/naflex_loader.py#L239)

**Параметры:**

dataset : Набор данных для загрузки.

patch_size : Размер одного патча для использования.

patch_size_choices : Список размеров патчей для обучения с переменным размером патчей.

patch_size_choice_probs : Вероятности для каждого выбора размера патча.

train_seq_lens : Длины последовательностей для обучения при динамическом батчинге.

max_seq_len : фиксированная длина последовательности для валидации.

batch_size : Размер батча для валидации и максимальная длина последовательности для обучения.

is_training : Указывает, используется ли для обучения (включает динамическое формирование пакетов).

mixup_fn : необязательная функция mixup.

no_aug : Отключить аугментацию.

re_prob : Вероятность случайного стирания.

re_mode : Режим случайного стирания.

re_count : Максимальное количество прямоугольников для стирания.

re_split : Флаг разделения случайного стирания.

train_crop_mode : Режим обрезки для обучения.

scale : Диапазон масштаба для случайного обрезания с изменением размера.

ratio : Диапазон соотношения сторон для случайного обрезания с изменением размера.

hflip : Вероятность горизонтального отражения.

vflip : Вероятность вертикального переворота.

color_jitter : Коэффициент цветовых искажений.

color_jitter_prob : Вероятность цветового джиттера.

grayscale_prob : Вероятность преобразования в оттенки серого.

gaussian_blur_prob : вероятность гауссова размытия.

auto_augment : политика AutoAugment.

num_aug_repeats : Количество повторов аугментации.

num_aug_splits : Количество разбиений для аугментации.

interpolation : Метод интерполяции.

mean : Средние значения нормализации.

std : значения стандартного отклонения нормализации.

channels : Количество каналов изображения, используется для нормализации по каналам в предзагрузчике.

crop_pct : Процент обрезки для валидации.

crop_mode : Режим обрезки.

crop_border_pixels : Обрезка пикселей по границе.

num_workers : Количество рабочих процессов для загрузки данных.

distributed : Используется ли распределённое обучение.

rank : Ранг процесса для распределённого обучения.

world_size : Общее количество процессов.

seed : Случайное зерно.

epoch : Начальный эпох.

use_prefetcher : Использовать ли предварительную загрузку (prefetching).

pin_memory : Фиксировать ли память.

img_dtype : Тип данных изображения.

device : Устройство, на которое перемещаются тензоры.

persistent_workers : Использовать ли постоянных рабочих, если `num_workers` больше нуля.

worker_seeding : Режим инициализации рабочих процессов.

patchify_channels_last : Плоская раскладка для каждого патча. `True` (по умолчанию): индекс канала меняется быстрее всего (настройка по умолчанию в NaFlex). `False`: C-P-P (каналы впереди — нативная раскладка Gemma4 / HF). Передаётся в `Patchify` и в раскладку нормализации предзагрузчика.

**Возвращает:**

Экземпляр DataLoader или NaFlexPrefetchLoader.

Создайте загрузчик данных с динамической выборкой длины последовательности для обучения.

#### timm.data.NaFlexMapDatasetWrapper[[timm.data.NaFlexMapDatasetWrapper]]

```python
timm.data.NaFlexMapDatasetWrapper(base_dataset: Dataset, patch_size: typing.Union[int, typing.Tuple[int, int], NoneType] = None, patch_size_choices: typing.Optional[typing.List[int]] = None, patch_size_choice_probs: typing.Optional[typing.List[float]] = None, seq_lens: typing.Tuple[int, ...] = (128, 256, 576, 784, 1024), max_tokens_per_batch: int = 16384, transform_factory: typing.Optional[typing.Callable] = None, mixup_fn: typing.Optional[typing.Callable] = None, seed: int = 42, shuffle: bool = True, distributed: bool = False, rank: int = 0, world_size: int = 1, epoch: int = 0, batch_divisor: int = 8, patchify_channels_last: bool = True)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/naflex_dataset.py#L200)

Обёртка IterableDataset для базового набора данных в стиле map.

Формирует батчи с переменной длиной последовательности. Вычисляет каноническое расписание батчей (пары длины последовательности и размера батча) один раз на основе общего размера набора данных (с выравниванием для распределения). В каждой эпохе перемешивает порядок этого канонического расписания и индексов набора данных. Это обеспечивает одинаковое количество батчей и образцов в каждой эпохе на всех рангах. Поддерживает распределённое обучение и несколько рабочих процессов.

#### set_epoch[[timm.data.NaFlexMapDatasetWrapper.set_epoch]]

```python
set_epoch(epoch: int)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/naflex_dataset.py#L479)

**Параметры:**

epoch : Новый номер эпохи.

Установите чтение эпохи, безопасное для многопроцессорности, для рабочих процессов DataLoader.

#### timm.data.NaFlexMixup[[timm.data.NaFlexMixup]]

```python
timm.data.NaFlexMixup(num_classes: int, mixup_alpha: float = 0.8, cutmix_alpha: float = 1.0, switch_prob: float = 0.5, prob: float = 1.0, local_shuffle: int = 4, label_smoothing: float = 0.0, mixup_off_epoch: int = 0, multi_label: bool = False)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/naflex_mixup.py#L168)

Вызываемая обёртка, объединяющая смешивание и генерацию целевых значений.

#### set_epoch[[timm.data.NaFlexMixup.set_epoch]]

```python
set_epoch(epoch: int)
```

[Источник](https://github.com/huggingface/pytorch-image-models/blob/v1.0.31/timm/data/naflex_mixup.py#L209)

Обновите состояние mixup для указанной эпохи.

