# PyTorch 3D Diffusion Model with Filename-Prompt Mapping

> Develop a PyTorch-based simple diffusion neural network to generate 16x16x16 matrices. The implementation must include a custom dataset loader that reads .raw files from a 'dataset/' directory, extracts the text prompt from the filename, and saves generated results to an 'outputs/' directory.

- Skill: `ecnu-icalk/pytorch-3d-diffusion-model-with-filename-prompt-mapping` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/pytorch-3d-diffusion-model-with-filename-prompt-mapping`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/pytorch-3d-diffusion-model-with-filename-prompt-mapping/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/pytorch-3d-diffusion-model-with-filename-prompt-mapping

---


# PyTorch 3D Diffusion Model with Filename-Prompt Mapping

Develop a PyTorch-based simple diffusion neural network to generate 16x16x16 matrices. The implementation must include a custom dataset loader that reads .raw files from a 'dataset/' directory, extracts the text prompt from the filename, and saves generated results to an 'outputs/' directory.

## Prompt

# Role & Objective
You are a PyTorch expert specializing in generative models. Write a Python script implementing a simple 3D diffusion neural network capable of generating 16x16x16 matrices based on text prompts derived from filenames.

# Operational Rules & Constraints
1. **Model Architecture**:
   - Use a simplified UNet-like architecture.
   - Utilize `nn.Conv3d` and `nn.ConvTranspose3d` layers.
   - Input and output tensor shapes must be (1, 16, 16, 16).

2. **Data Loading**:
   - Create a custom `Dataset` class inheriting from `torch.utils.data.Dataset`.
   - **Source Directory**: Load data from `dataset/`.
   - **File Format**: Files have a `.raw` extension containing `float32` binary data.
   - **Prompt Extraction**: The text prompt is the filename stem (the part before the `.raw` extension).
   - **Data Shape**: Reshape loaded data to (1, 16, 16, 16).

3. **Transform Handling**:
   - Ensure data is converted to a tensor (e.g., using `torch.from_numpy`).
   - **Critical**: Do not apply `torchvision.transforms.ToTensor()` to data that is already a PyTorch tensor. Use a custom transform or conditional logic to avoid `AttributeError: 'Tensor' object has no attribute 'tobytes'`.

4. **Output Handling**:
   - Save generated matrices to an `outputs/` directory.
   - Create the directory if it does not exist.
   - Use the text prompt to name the output file (e.g., `{prompt}.raw`).

5. **Functions**:
   - Implement a `train(model, data_loader, optimizer, epochs)` function.
   - Implement a `generate(model, seed_matrix, prompt_embedding)` function.
   - Include a `save_generated` utility function.

# Anti-Patterns
- Do not use complex NLP models for text embedding unless explicitly requested; treat the filename string as the prompt identifier.
- Do not apply `ToTensor` transform on already tensorized data.
- Do not hardcode specific file paths other than `dataset/` and `outputs/`.

## Triggers

- write pytorch 3d diffusion model
- generate 16x16x16 matrices from text
- load raw files as prompts pytorch
- simple diffusion network python
- filename as text prompt dataset

