update
使用 Jitor 实现的 CGAN ,可以生成所有阿拉伯数字。
若你还没有配置好 Jitor,可以先使用如下指令在虚拟环境中安装 Jitor,或者访问官方教程 进行安装。
配置好环境后可以使用如下指令运行:
python3 ./CGAN.py
可以修改 number 的值来生成希望的数字。
number
几个参数含义如下:
n_epochs
batch_size
lr
b1
b2
n_cpu
latent_dim
n_classes
img_size
channels
sample_interval
Jitor 的使用方法与 PyTorch 基本类似。在这里简单介绍几个实验中用到的模型。
我们可以在计图的官网上查到所有 API 的源码。
Module 类是所有神经网络层和模型的基类。提供了构建神经网络模型所需的各种基础方法,例如前向计算(execute,类似 PyTorch 中的 forward)、设置混合精度等方法。
Module
execute
forward
在本次实验中,我们只需要用 __init__ 和 execute 来实现一些简单的模型。
__init__
Linear 类对输入参数进行线性变换,$y = Ax + b$ 其中矩阵 $A$ 和向量 $b$ 为可学习参数。
Linear
Linear 类有三个参数,分别是 in_feature, out_feature, bias ,表示输入向量的维度,输出向量的维度和是否有偏置值(默认为真)。
in_feature
out_feature
bias
nn.Sequential 是一个顺序容器,Sequential 的 execute 方法回将其输入传给第一个模块,并将模块的输出传给下一个模块作为输入,讲最后一个模块的输出作为输出。
nn.Sequential
Sequential
GAN (生成对抗式网络),同时训练一个生成器与判别器,生成器试图生成数据欺骗判别器,而判别器试图区分真实数据与生成数据,两者相互对抗达成生成质量的提升。
然而这样得到的生成数据不可控,随机性较强。CGAN 在 GAN 的基础上为生成器和判别器提供条件信息,从而实现可控的生成。
本次实验中 Generatior 类代表生成器, Discriminator 类则代表判别器。
Generatior
Discriminator
A Jittor implementation of Conditional GAN (CGAN)
Jitor-CGAN
使用 Jitor 实现的 CGAN ,可以生成所有阿拉伯数字。
使用方法
若你还没有配置好 Jitor,可以先使用如下指令在虚拟环境中安装 Jitor,或者访问官方教程 进行安装。
配置好环境后可以使用如下指令运行:
可以修改
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_feature,out_feature,bias,表示输入向量的维度,输出向量的维度和是否有偏置值(默认为真)。nn.Sequential
nn.Sequential是一个顺序容器,Sequential的execute方法回将其输入传给第一个模块,并将模块的输出传给下一个模块作为输入,讲最后一个模块的输出作为输出。Conditional GAN 基本原理
GAN (生成对抗式网络),同时训练一个生成器与判别器,生成器试图生成数据欺骗判别器,而判别器试图区分真实数据与生成数据,两者相互对抗达成生成质量的提升。
然而这样得到的生成数据不可控,随机性较强。CGAN 在 GAN 的基础上为生成器和判别器提供条件信息,从而实现可控的生成。
本次实验中
Generatior类代表生成器,Discriminator类则代表判别器。