"Use for PaddleViT GAN workflows with TransGAN or Styleformer:
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill generative --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Generative?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-generative)More formats (shields.io, HTML) on the badges page.
---
name: generative
description: "Use for PaddleViT GAN workflows with TransGAN or Styleformer:
choose the generator/discriminator family, validate
CIFAR10/STL10/CelebA/LSUN-LMDB inputs, generate or evaluate image batches,
interpret FID/PSNR/SSIM, and respect single- or multi-GPU and dependency
boundaries. Excludes checkpoint porting, network downloads, and full
dataset-scale training unless explicitly requested."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# PaddleViT GANs
## Responsibility and boundaries
Use this route when a request names the PaddleViT GAN module, **TransGAN**, or
**Styleformer**, or asks to generate/evaluate images from one of those
transformer GANs. The route owns:
- the two model families' generator/discriminator contracts and shipped YAML
variants;
- the CIFAR10, STL10, CelebA, and LSUN-church LMDB data contracts;
- safe generation/evaluation planning, image range/layout checks, FID/PSNR/SSIM
interpretation, and training/evaluation resource boundaries;
- dependency diagnosis for Paddle, Pillow, OpenCV, SciPy, LMDB, matplotlib, and
tqdm; and
- the download-free bundled contract smoke at
`scripts/generative_model_smoke.py`.
Do not use this route for classification, detection, segmentation, generic
Paddle export, or repository-wide environment operations. Do not port PyTorch
weights or download checkpoints, Inception weights, or datasets as part of a
safe generation/evaluation request. The source contains weight-porting helpers
and external model links, but those are deliberately excluded. Full
50k-sample evaluation and multi-epoch/full-dataset training are expensive and
require explicit user authorization, local data, local checkpoints, and a
verified budget.
This is a self-contained operating guide. It does not import the original
checkout at runtime. The source was inspected at PaddleViT commit
`5ac7d89d4fd0e3235d055ff15d5b1b1315499d70`; source paths in the evidence list
are provenance, not runtime dependencies.
## Route a request
1. Identify the family and operation before touching a config:
- choose **TransGAN** for the pure-transformer generator and two-scale
transformer discriminator;
- choose **Styleformer** for the style-vector mapping/synthesis generator
and StyleGANv2-style convolutional discriminator;
- choose `generate` for images only, `eval` for FID or metric reporting, and
`train` only after the user explicitly accepts data/GPU/compute cost.
2. Choose the dataset and exact image size. The shipped Styleformer YAMLs map
CIFAR10→32, STL10→48, CelebA→64, and LSUN-church→128. The TransGAN YAML is
CIFAR10→32. Do not silently reuse a 32-pixel config for a 48/64/128-pixel
dataset.
3. Inspect the local data layout with the checklist in
`references/data-formats.md`. An absent optional dependency is a preflight
failure, not a reason to create a fake dataset or claim evaluation passed.
4. Run the safe, deterministic synthetic smoke before a source build or a
costly run:
```bash
python /path/to/this/skill/scripts/generative_model_smoke.py --help
python /path/to/this/skill/scripts/generative_model_smoke.py --model all --device auto
```
This checks small independent Paddle contracts only. It does not import the
checkout, load a checkpoint, open a dataset, contact a URL, or prove
historical GAN quality. If Paddle is unavailable, the script reports a
clearly marked skip.
5. For a source model build, run from exactly one family directory and expose
only that directory on `PYTHONPATH`:
```bash
cd gan/transGAN # or gan/Styleformer
export PYTHONPATH="$PWD:${PYTHONPATH:-}"
```
Both families use common module names (`config.py`, `utils.py`,
`generate.py`). Mixing both source roots can import the wrong family.
6. Record the final config, source commit, device, seed, local checkpoint
provenance, data counts, image range/order, metric feature extractor, and
sample limits. If any of those are unknown, report the result as partial.
## Source command contract
The source uses short single-dash flags. A safe command is a plan/template,
not permission to download or run expensive work:
```text
-cfg PATH family YAML; recursive BASE entries are supported
-dataset NAME cifar10, stl10, celeba, or lsun where wired
-batch_size N per-process batch size
-data_path PATH dataset root or family-specific image/LMDB directory
-image_size N override only when model architecture supports it
-eval evaluation-only path
-pretrained PREFIX source training/eval appends .pdparams in main scripts
-resume PREFIX source expects PREFIX.pdparams and PREFIX.pdopt
-num_out_images N generation count for generate.py
-out_folder DIR generated image destination
```
`generate.py` has family-specific conventions. TransGAN's generator loads a
state dictionary under `gen_state_dict`; Styleformer's standalone generator
loader expects the saved generator dictionary directly, while the training
scripts expect a combined `gen_state_dict`/`dis_state_dict` checkpoint. Verify
the actual local file keys before loading. Do not add `.pdparams` to a
`-pretrained` prefix when using the training/evaluation scripts; generation
examples are inconsistent and may accept a complete filename. Prefer an
explicit local-file check and a tiny load test over guessing.
## Generation and evaluation procedure
### Generation
- Set the device before model construction. Use one visible GPU for a normal
source generation run; CPU is suitable only for parser/shape diagnostics and
may be impractical for the full transformer.
- Seed Paddle (and NumPy/Python if used by the caller) before sampling. The
source scripts use random latent tensors and do not promise a stable
benchmark seed.
- TransGAN samples `z` with shape `[B, 256]`, calls `Generator(z, epoch)`, and
returns `[B, 3, 32, 32]` for the shipped CIFAR10 config. Styleformer samples
`z` with shape `[B, 512]`; its `c_dim` is zero in the shipped configs, so the
mapping network ignores labels even though eval code supplies a label
tensor. It returns `[B, 3, H, W]` with H/W set by the chosen config.
- Both source generation scripts postprocess model output with
`(output * 127.5 + 128).clip(0, 255).astype('uint8')`, then transpose from
CHW to HWC and write RGB PNGs. This assumes the model output is in a
`[-1, 1]`-like range. TransGAN's final source `Conv2D` has no explicit tanh;
inspect output statistics rather than treating the assumption as a proven
invariant.
- Keep generated tensors in NCHW for Paddle discriminators and metric feature
extraction. Convert to HWC only at the image-file boundary.
### Evaluation
The source validation loop pairs each real batch with a random generated batch,
converts fake images to `[0,1]` after uint8 clipping, and feeds both through
the local FID implementation. `MAX_REAL_NUM` and `MAX_GEN_NUM` are converted
to whole batches with integer division; a limit smaller than one batch can
silently yield no usable samples. Check effective counts after batching.
FID is distribution-level and requires both real and generated collections,
the same image preprocessing, a local compatible InceptionV3 parameter file,
and enough samples to form non-degenerate statistics. The source FID class
will otherwise call Paddle's URL weight helper, which violates this skill's
no-network boundary. Pass a local `premodel_path` only in an explicitly
approved evaluation environment; never let a safe smoke implicitly download
it. The repository README's `fid50k_full` numbers are historical reference
claims, not results produced by this skill.
PSNR and SSIM are paired image-fidelity metrics in the bundled source metric
implementation. They require equal shapes, accept `HWC` or `CHW`, and expect
pixel values in `[0,255]`; `crop_border` removes pixels on every edge. They
are not substitutes for GAN FID when comparing unrelated generated and real
sets. SSIM uses OpenCV's Gaussian filter and the source reverses channels in
its implementation, so record channel order and do not compare its number to
a differently configured library without a controlled fixture.
## Training and device boundaries
Training is not a smoke:
- TransGAN's single-GPU loop uses a hinge-style discriminator loss and updates
the generator on alternating epochs; the config defaults to 300 epochs,
`AdamW`, warmup/cosine scheduling, and gradient clipping. The discriminator
can apply `DiffAugment` when `DATA.DIFF_AUG` is not effectively disabled.
- Styleformer's loop uses a WGAN-GP-like objective, one discriminator update
followed by five generator updates, and a gradient penalty. Its helper uses
an explicit `.cuda()` for interpolation, so CPU training is not a valid
substitute without a deliberate source fix. Its source also places uint8
clipping/scaling in the training path; verify current Paddle gradient
behavior before claiming that an unmodified source run trains correctly.
- Single-GPU scripts construct both networks and ordinary data loaders. The
multi-GPU scripts use `paddle.distributed`, `DataParallel`, distributed
batch sampling, and gather FID feature lists. `-batch_size` is per GPU, so
effective batch size scales with visible process count. Set
`CUDA_VISIBLE_DEVICES` and `-ngpus` consistently; do not infer that a CPU
run verifies NCCL or multi-GPU behavior.
- The prepared inspection evidence is Paddle GPU 2.6.2 on an A100 host with
Pillow/OpenCV/SciPy/LMDB/matplotlib/tqdm imports and CUDA dependency smoke
passing. This is environment evidence, not a guarantee that every
Paddle-2.1-era script is unchanged-compatible with Paddle 2.6.2.
## Verification ladder
Use the cheapest check that answers the question:
1. Parse the YAML and inspect dataset/checkpoint paths without opening data.
2. Run `generative_model_smoke.py` for deterministic, download-free tiny
generator/discriminator shape and finite-value contracts.
3. Build one source family on a tiny local/synthetic tensor and record actual
output shapes. The inspected source smoke passed on `gpu:0` for both
shipped CIFAR10 configurations: each generator returned `[1,3,32,32]`
and each discriminator returned `[1,1]` with finite values.
4. Decode a few local data examples and verify range/order/shape. Test LMDB
opening separately from model construction.
5. Run a bounded local generation or metric calculation only with an explicit
checkpoint, local Inception weights for FID, local data, and a declared
sample count.
6. Treat full training, 50k FID, multi-GPU eval, and historical model-zoo
reproduction as expensive acceptance tests, not default verification.
A pass at an earlier level does not establish checkpoint compatibility, FID
quality, dataset correctness at scale, or historical benchmark reproduction.
## References and recovery
Use the focused references for details rather than expanding this router:
- `references/model-overview.md`: model and discriminator internals, config
matrix, tensor contracts, and source quirks.
- `references/workflows.md`: safe generation/evaluation/training planning,
single/multi-GPU commands, metric gates, and no-network rules.
- `references/data-formats.md`: exact dataset layouts, transforms, path
semantics, labels, ranges, and preflight checks.
- `references/troubleshooting.md`: dependency, path, shape, metric, CUDA, and
source-compatibility recovery.
When a problem is shared with Paddle installation, AMP, distributed launch,
export, or inference, hand off to the repository's deployment/operations
route instead of inventing a second global environment procedure.
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!