PyTorch Implementation of Denoising Diffusion Probabilistic Models [paper] [official repo]
usage: train_toy.py [-h] [--dataset {gaussian8,gaussian25,swissroll}]
[--size SIZE] [--root ROOT] [--epochs EPOCHS] [--lr LR]
[--beta1 BETA1] [--beta2 BETA2] [--lr-warmup LR_WARMUP]
[--batch-size BATCH_SIZE] [--timesteps TIMESTEPS]
[--beta-schedule {quad,linear,warmup10,warmup50,jsd}]
[--beta-start BETA_START] [--beta-end BETA_END]
[--model-mean-type {mean,x_0,eps}]
[--model-var-type {learned,fixed-small,fixed-large}]
[--loss-type {kl,mse}] [--image-dir IMAGE_DIR]
[--chkpt-dir CHKPT_DIR] [--chkpt-intv CHKPT_INTV]
[--eval-intv EVAL_INTV] [--seed SEED] [--resume]
[--gpu GPU] [--mid-features MID_FEATURES]
[--num-temporal-layers NUM_TEMPORAL_LAYERS]
optional arguments:
-h, --help show this help message and exit
--dataset {gaussian8,gaussian25,swissroll}
--size SIZE
--root ROOT root directory of datasets
--epochs EPOCHS total number of training epochs
--lr LR learning rate
--beta1 BETA1 beta_1 in Adam
--beta2 BETA2 beta_2 in Adam
--lr-warmup LR_WARMUP
number of warming-up epochs
--batch-size BATCH_SIZE
--timesteps TIMESTEPS
number of diffusion steps
--beta-schedule {quad,linear,warmup10,warmup50,jsd}
--beta-start BETA_START
--beta-end BETA_END
--model-mean-type {mean,x_0,eps}
--model-var-type {learned,fixed-small,fixed-large}
--loss-type {kl,mse}
--image-dir IMAGE_DIR
--chkpt-dir CHKPT_DIR
--chkpt-intv CHKPT_INTV
frequency of saving a checkpoint
--eval-intv EVAL_INTV
--seed SEED random seed
--resume to resume from a checkpoint
--gpu GPU
--mid-features MID_FEATURES
--num-temporal-layers NUM_TEMPORAL_LAYERS
usage: train.py [-h] [--model {unet}] [--dataset {mnist,cifar10,celeba}]
[--root ROOT] [--epochs EPOCHS] [--lr LR] [--beta1 BETA1]
[--beta2 BETA2] [--batch-size BATCH_SIZE]
[--timesteps TIMESTEPS]
[--beta-schedule {quad,linear,warmup10,warmup50,jsd}]
[--beta-start BETA_START] [--beta-end BETA_END]
[--model-mean-type {mean,x_0,eps}]
[--model-var-type {learned,fixed-small,fixed-large}]
[--loss-type {kl,mse}] [--task {generation}]
[--train-device TRAIN_DEVICE] [--eval-device EVAL_DEVICE]
[--image-dir IMAGE_DIR] [--num-save-images NUM_SAVE_IMAGES]
[--config-dir CONFIG_DIR] [--chkpt-dir CHKPT_DIR]
[--chkpt-intv CHKPT_INTV] [--log-dir LOG_DIR] [--seed SEED]
[--resume] [--eval] [--use-ema] [--ema-decay EMA_DECAY]
optional arguments:
-h, --help show this help message and exit
--model {unet} backbone decoder
--dataset {mnist,cifar10,celeba}
--root ROOT root directory of datasets
--epochs EPOCHS total number of training epochs
--lr LR learning rate
--beta1 BETA1 beta_1 in Adam
--beta2 BETA2 beta_2 in Adam
--batch-size BATCH_SIZE
--timesteps TIMESTEPS
number of diffusion steps
--beta-schedule {quad,linear,warmup10,warmup50,jsd}
--beta-start BETA_START
--beta-end BETA_END
--model-mean-type {mean,x_0,eps}
--model-var-type {learned,fixed-small,fixed-large}
--loss-type {kl,mse}
--task {generation}
--train-device TRAIN_DEVICE
--eval-device EVAL_DEVICE
--image-dir IMAGE_DIR
--num-save-images NUM_SAVE_IMAGES
number of images to generate & save
--config-dir CONFIG_DIR
--chkpt-dir CHKPT_DIR
--chkpt-intv CHKPT_INTV
frequency of saving a checkpoint
--log-dir LOG_DIR
--seed SEED random seed
--resume to resume from a checkpoint
--eval whether to evaluate fid during training
--use-ema whether to use exponential moving average
--ema-decay EMA_DECAY
decay factor of ema
# train a 25-Gaussian toy model on cuda:0 a total of 100 epochs
python train_toy.py --dataset gaussian8 --gpu 0 --epochs 100
# train a cifar10 model on cuda:0 for a total of 50 epochs
python train.py --dataset cifar10 --train-device cuda:0 --epochs 50
- (Predict
$x_{t-1}$ from$x_t, x_0$ )
- (Predict
$x_{t-1}$ from$x_t, \epsilon_t$ )
where