"Use Tensorpack DataFlow, datasets, augmentors, serializers, input
Scanned 9/9/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill dataflow --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dataflow?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-dataflow-arex-skill)More formats (shields.io, HTML) on the badges page.
---
name: dataflow
description: "Use Tensorpack DataFlow, datasets, augmentors, serializers, input
sources, and performance-tuning utilities."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# Tensorpack DataFlow Skill
Use this sub-skill when the user needs Tensorpack data loading, preprocessing,
serialization, image augmentation, TensorFlow input-source bridging, or data
pipeline performance diagnosis. Keep answers self-contained: rely on the bundled
references and script here instead of reopening the original repository.
## Read first
1. For exact API signatures, component roles, optional dependencies, and gotchas,
read [`references/api-reference.md`](references/api-reference.md).
2. For concrete construction recipes and decision trees, read
[`references/workflows.md`](references/workflows.md).
3. For symptom-to-recovery guidance, read
[`references/troubleshooting.md`](references/troubleshooting.md).
4. For a safe serializer availability/roundtrip check, use
[`scripts/dataflow_serializer_smoke.py`](scripts/dataflow_serializer_smoke.py).
## Use this when
- The task mentions `tensorpack.dataflow`, `DataFlow`, datapoints, components,
`reset_state()`, `__iter__()`, `BatchData`, `MapData`, `MapDataComponent`,
`FakeData`, `DataFromList`, `DataFromGenerator`, `RepeatedData`, or `PrintData`.
- The user asks how to choose between parallel runners and parallel mappers, or
between threads, processes, and ZeroMQ data pipes.
- The task involves `LMDBSerializer`, `NumpySerializer`, `TFRecordSerializer`,
`HDF5Serializer`, optional serializer imports, or a data serialization
roundtrip.
- The task involves `tensorpack.dataflow.imgaug`, `AugmentorList`, deterministic
image transforms, coordinate transforms, `Flip`, `Resize`, `CenterCrop`,
`GoogleNetRandomCropAndResize`, dtype conversions, contrast, or brightness.
- The task asks how a DataFlow feeds Tensorpack trainers through `FeedInput`,
`QueueInput`, `StagingInput`, `TFDatasetInput`, `TensorInput`, or `ZMQInput`.
- The task involves Tensorpack dataset loaders such as `Mnist`, `Cifar10`,
`SVHNDigit`, `ILSVRC12`, or `ILSVRC12Files`.
- The task is about queue size, `TestDataSpeed`, random disk reads, CPU-bound
augmentation, network/IPC bottlenecks, or slow input pipelines.
## Route elsewhere
- Model definitions, trainer selection, callbacks, summaries, and full training
loops belong in [`../training/SKILL.md`](../training/SKILL.md).
- Offline prediction, export, checkpoint loading, `.npz` model-zoo variables,
and checkpoint inspection belong in
[`../inference-export/SKILL.md`](../inference-export/SKILL.md).
- Full domain example command catalogs belong at the root example catalog and the
training example recipes:
[`../../references/examples-catalog.md`](../../references/examples-catalog.md)
and [`../training/references/example-recipes.md`](../training/references/example-recipes.md).
## Operating model
Tensorpack DataFlow is a pure-Python iterator system. A source DataFlow yields
one datapoint at a time; wrappers transform, filter, batch, shuffle, prefetch,
or serialize those datapoints. A datapoint is normally a list of components, but
some DataFlow utilities also support dict datapoints. Tensorpack trainers do not
usually consume DataFlow directly; an `InputSource` turns a DataFlow or another
input producer into tensors in the TensorFlow graph.
Default answer pattern:
1. Identify whether the user needs a source, wrapper, parallelization,
serialization, augmentation, dataset loader, InputSource, or performance
diagnosis.
2. State the DataFlow contract: implement `__iter__()`, call `reset_state()` in
the process that will iterate, treat `__len__()` as optional/rough unless the
downstream consumer needs exact size, and avoid concurrent iteration of one
non-reentrant instance.
3. Choose the smallest composition that preserves correctness before optimizing
speed.
4. For training, allow distribution-preserving duplication/reordering only when
it is acceptable for stochastic training. For validation/inference, preserve
exact membership and usually exact ordering.
5. Use `PrintData` and `TestDataSpeed` before guessing. If a trainer queue is
close to empty, diagnose the input pipeline; if it is full, route graph or
trainer speed questions to training.
## Quick decisions
- New custom data format: write a source `DataFlow` or wrap a generator with
`DataFromGenerator`; then compose maps, augmentors, batches, and prefetching.
- In-memory toy or deterministic tests: use `FakeData` or `DataFromList`.
- Map one component: use `MapDataComponent(ds, func, index=...)`; map/filter a
full datapoint: use `MapData(ds, func)`, returning `None` to drop it.
- Batch same-shaped components: use `BatchData(ds, batch_size)`; use
`use_list=True` when components have variable shapes such as raw images.
- Training prefetch with independent stochastic workers: use
`MultiProcessRunnerZMQ` or `MultiThreadRunner` only when duplicated/reordered
i.i.d. samples are acceptable.
- Preserve set membership while parallelizing expensive transforms: use
`MultiThreadMapData` or `MultiProcessMapData`/`MultiProcessMapDataZMQ`; use
`strict=True` for finite validation-style passes, remembering order is still
not preserved.
- Random-read ImageNet-like data on slow disks: consider serializing encoded
bytes to LMDB, then sequentially read, locally shuffle, decode, augment, and
batch.
- Feed a Tensorpack trainer: prefer `QueueInput(dataflow)` for most DataFlow
training; wrap with `StagingInput` when GPU staging is useful; use
`TFDatasetInput` or `TensorInput` for TensorFlow-native input pipelines.
## Reference tasks
- Build or audit a custom DataFlow contract: use
[`references/workflows.md#custom-source-dataflow`](references/workflows.md#custom-source-dataflow)
and the DataFlow section of
[`references/api-reference.md#dataflow-object-contract`](references/api-reference.md#dataflow-object-contract).
- Compose maps, filters, batches, and debug prints: use
[`references/workflows.md#compose-maps-batches-and-debug-prints`](references/workflows.md#compose-maps-batches-and-debug-prints).
- Decide runner vs mapper / threads vs processes: use
[`references/workflows.md#parallelism-decision-tree`](references/workflows.md#parallelism-decision-tree).
- Serialize and reload tiny or large DataFlows: use
[`references/workflows.md#serialization-roundtrips`](references/workflows.md#serialization-roundtrips)
and the bundled smoke script.
- Create ImageNet-style training/validation pipelines: use
[`references/workflows.md#imagenet-style-pipelines`](references/workflows.md#imagenet-style-pipelines).
- Distill a TIMIT-style LMDB preprocessing pattern: use
[`references/workflows.md#timit-style-lmdb-pattern`](references/workflows.md#timit-style-lmdb-pattern).
- Bridge to Tensorpack trainers: use
[`references/workflows.md#inputsource-bridge-to-trainers`](references/workflows.md#inputsource-bridge-to-trainers).
- Diagnose speed: use
[`references/workflows.md#performance-diagnosis`](references/workflows.md#performance-diagnosis)
and [`references/troubleshooting.md#slow-or-empty-queues`](references/troubleshooting.md#slow-or-empty-queues).
## Safe checks
Use the bundled script for serializer availability, optional dependency messages,
and tiny deterministic roundtrips:
```bash
python sub-skills/dataflow/scripts/dataflow_serializer_smoke.py --help
python sub-skills/dataflow/scripts/dataflow_serializer_smoke.py \
--workdir <scratch-dir> --formats numpy
python sub-skills/dataflow/scripts/dataflow_serializer_smoke.py \
--workdir <scratch-dir> --formats all
```
The script writes only under `--workdir`, uses tiny synthetic datapoints, avoids
network and downloads, and does not require original Tensorpack source files.
## Hard boundaries
- Do not recommend running original example or test files as part of answering a
user question. Use the distilled recipes and bundled helper instead.
- Do not claim GPU or multi-node performance verification from this skill; the
DataFlow references document CPU/IPC/disk/network reasoning and route trainer
scaling to training.
- Do not expose machine-specific environment or filesystem locations in
user-facing answers.
- Do not use runner-style parallelism for validation unless the user explicitly
accepts potential duplication and reordering; use mapper-style strict passes or
a single runner process for exact validation-style data.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!