目录
YSuagnh16小时前6次提交
目录readme.md

Jitor-CGAN

使用 Jitor 实现的 CGAN ,可以生成所有阿拉伯数字。

使用方法

若你还没有配置好 Jitor,可以先使用如下指令在虚拟环境中安装 Jitor,或者访问官方教程 进行安装。

配置好环境后可以使用如下指令运行:

python3 ./CGAN.py

可以修改 number 的值来生成希望的数字。

几个参数含义如下:

  • n_epochs: 训练的 epoch 数 (默认: 100)
  • batch_size: 批次大小 (默认: 64)
  • lr: Adam 优化器的学习率 (默认: 0.0002)
  • b1: Adam 优化器的一阶动量衰减 (默认: 0.5)
  • b2: Adam 优化器的二阶动量衰减 (默认: 0.999)
  • n_cpu: 批次生成期间使用的 CPU 线程数 (默认: 8)
  • latent_dim: 潜在空间的维度 (默认: 100)
  • n_classes: 数据集的类别数 (默认: 10)
  • img_size: 每个图像维度的尺寸 (默认: 32)
  • channels: 图像通道数 (默认: 1)
  • sample_interval: 图像采样间隔 (默认: 1000)

Jitor基本用法

Jitor 的使用方法与 PyTorch 基本类似。在这里简单介绍几个实验中用到的模型。

我们可以在计图的官网上查到所有 API 的源码。

nn.Module

Module 类是所有神经网络层和模型的基类。提供了构建神经网络模型所需的各种基础方法,例如前向计算(execute,类似 PyTorch 中的 forward)、设置混合精度等方法。

在本次实验中,我们只需要用 __init__execute 来实现一些简单的模型。

nn.Linear

Linear 类对输入参数进行线性变换,$y = Ax + b$ 其中矩阵 $A$ 和向量 $b$ 为可学习参数。

Linear 类有三个参数,分别是 in_featureout_featurebias ,表示输入向量的维度,输出向量的维度和是否有偏置值(默认为真)。

nn.Sequential

nn.Sequential 是一个顺序容器,Sequentialexecute 方法回将其输入传给第一个模块,并将模块的输出传给下一个模块作为输入,讲最后一个模块的输出作为输出。

Conditional GAN 基本原理

GAN (生成对抗式网络),同时训练一个生成器与判别器,生成器试图生成数据欺骗判别器,而判别器试图区分真实数据与生成数据,两者相互对抗达成生成质量的提升。

然而这样得到的生成数据不可控,随机性较强。CGAN 在 GAN 的基础上为生成器和判别器提供条件信息,从而实现可控的生成。

本次实验中 Generatior 类代表生成器, Discriminator 类则代表判别器。

关于

A Jittor implementation of Conditional GAN (CGAN)

40.0 KB
邀请码