最终Final
使用 Jittor 在 MNIST 数据集上实现 Conditional GAN(CGAN),支持“指定类别 → 生成对应数字图像”。仓库内包含两份实现:
Code/CGAN.py
Code/CDGAN.py
本项目开源在:https://gitlink.org.cn/Chuilong/CGAN_jittor.git。
result.png 为仓库内的示例输出(也可以运行脚本生成你自己的结果):
result.png
使用cuda12.2-cudnn8-devel-ubuntu22.04-py310环境,GPU为Tesla V100-SXM2-16GB * 1,CPU使用6核 Xeon(R) Silver 4214R,显存16GB,内存62GB。
使用Python 3.7,安装以下依赖: astunparse==1.6.3 certifi @ file:///croot/certifi_1671487769961/work/certifi cycler==0.11.0 fonttools==4.38.0 jittor==1.3.10.0 kiwisolver==1.4.5 matplotlib==3.5.3 numpy==1.21.6 packaging==24.0 pandas==1.3.5 Pillow==9.5.0 pyparsing==3.1.4 python-dateutil==2.9.0.post0 pytz==2025.2 six==1.17.0 tqdm==4.67.1 typing_extensions==4.7.1
可使用下面的指令安装依赖:
pip install -r requirements.txt
python Code/CGAN.py
该脚本会:
jittor.dataset.mnist.MNIST
--sample_interval
python Code/CDGAN.py
两份脚本的核心参数基本一致(以实际脚本为准):
--n_epochs
--batch_size
--latent_dim
--n_classes
--img_size
--channels
"/root/data-fs/1000"
log_path
csv_path
/root/data-fs/1000/<batches_done>.png
generator_last1000epoch.pkl
discriminator_last1000epoch.pkl
result1000epoch.png
/root/data-fs/256v2/<batches_done>.png
/root/data-fs/256v8/
resultcdganepoch222.png
两份脚本在训练结束后都会生成一个固定字符串对应的数字序列,直接在脚本末尾修改 number 即可,例如:
number
number = "2310986"
你可以通过注释训练过程的方式来直接生成指定数字的拼接图。
. ├─ Code/ │ ├─ CGAN.py # 全连接版 Conditional GAN │ └─ CDGAN.py # 卷积版 Conditional GAN ├─ result.png # 示例输出图 ├─ report.pdf # 报告(可选参考) └─ README.md
这是南开大学计算机科学与技术专业 计算机图形学课程的项目,由 2310986 陈兴浩独立完成。
/root/data-fs/...
两份脚本里有一些输出路径是硬编码的(训练日志、采样图片、模型保存)。如果你在本地/Windows 环境运行,请把这些路径改成你机器上可写的目录。
当前 Code/CDGAN.py 的 --n_epochs 参数那一行包含 // 风格注释(这在 Python 中会报错)。把 //... 改成 # ... 即可正常解析运行。
//
//...
# ...
2025年12月19日
A Jittor implementation of Conditional GAN (CGAN).
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
CGAN_jittor
使用 Jittor 在 MNIST 数据集上实现 Conditional GAN(CGAN),支持“指定类别 → 生成对应数字图像”。仓库内包含两份实现:
Code/CGAN.py:全连接版 CGAN(MLP Generator + MLP Discriminator)Code/CDGAN.py:卷积/反卷积版 CGAN(DCGAN 的条件化版本)本项目开源在:https://gitlink.org.cn/Chuilong/CGAN_jittor.git。
效果示例
result.png为仓库内的示例输出(也可以运行脚本生成你自己的结果):环境依赖
使用cuda12.2-cudnn8-devel-ubuntu22.04-py310环境,GPU为Tesla V100-SXM2-16GB * 1,CPU使用6核 Xeon(R) Silver 4214R,显存16GB,内存62GB。
使用Python 3.7,安装以下依赖: astunparse==1.6.3 certifi @ file:///croot/certifi_1671487769961/work/certifi cycler==0.11.0 fonttools==4.38.0 jittor==1.3.10.0 kiwisolver==1.4.5 matplotlib==3.5.3 numpy==1.21.6 packaging==24.0 pandas==1.3.5 Pillow==9.5.0 pyparsing==3.1.4 python-dateutil==2.9.0.post0 pytz==2025.2 six==1.17.0 tqdm==4.67.1 typing_extensions==4.7.1
可使用下面的指令安装依赖:
快速开始
1) 训练并采样(全连接版)
该脚本会:
jittor.dataset.mnist.MNIST自动下载/读取 MNIST--sample_interval保存采样网格图2) 训练并采样(卷积版)
参数说明
两份脚本的核心参数基本一致(以实际脚本为准):
--n_epochs:训练轮数--batch_size:batch 大小--latent_dim:噪声向量维度--n_classes:类别数(MNIST 为 10)--img_size:输出图像尺寸(默认 32×32)--channels:通道数(MNIST 为 1)--sample_interval:采样间隔(按 step 计)输出内容
Code/CGAN.py"/root/data-fs/1000"(见脚本内的log_path/csv_path,你应该自己修改为你自己的目录)/root/data-fs/1000/<batches_done>.png(你应该自己修改为你自己的目录)generator_last1000epoch.pkl、discriminator_last1000epoch.pkl(你应该自己修改为你自己的目录)result1000epoch.png(你应该自己修改为你自己的目录)Code/CDGAN.py/root/data-fs/256v2/<batches_done>.png(你应该自己修改为你自己的目录)/root/data-fs/256v8/(你应该自己修改为你自己的目录)resultcdganepoch222.png(你应该自己修改为你自己的目录)自定义“指定数字生成”
两份脚本在训练结束后都会生成一个固定字符串对应的数字序列,直接在脚本末尾修改
number即可,例如:number = "2310986"你可以通过注释训练过程的方式来直接生成指定数字的拼接图。
项目结构
作者信息
这是南开大学计算机科学与技术专业 计算机图形学课程的项目,由 2310986 陈兴浩独立完成。
常见问题
1) 为什么脚本会尝试写入
/root/data-fs/...?两份脚本里有一些输出路径是硬编码的(训练日志、采样图片、模型保存)。如果你在本地/Windows 环境运行,请把这些路径改成你机器上可写的目录。
2)
Code/CDGAN.py无法运行(语法错误)当前
Code/CDGAN.py的--n_epochs参数那一行包含//风格注释(这在 Python 中会报错)。把//...改成# ...即可正常解析运行。2025年12月19日